我使用来自其他Jars的类,这些Jars使用使用log4j的其他Jars中的类。我不能换这些罐子。
在IntelliJ中调试时,这些类中的许多类都在启动时将调试打印到控制台。
我在找方法来阻止这件事,因为这很让人恼火。
我尝试创建一个带有"error“日志级别的log4j.properties文件,并将其加载到应用程序的main()中,并将默认的记录器设置为"error”级别。我也检查过了,所有的Jar内部都有一个属性,但是没有详细说明日志级别(他们只是说Jar是什么版本)。我尝试创建自己的属性文件供类使用,但它们已经在加载文件之前打印了调试。
下面是正在生成的一些调试聊天程序:
12:54:17.660 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to xxx.properties
12:54:17.665 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is xxx.properties
12:54:17.665 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file xxx.properties at null: no protocol: xxx.properties
12:54:17.668 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path xxx.properties
12:54:17.668 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - Base path set to file:///C:/myProgram/xxx.properties
12:54:17.680 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to yyy.properties
12:54:17.680 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file yyy.properties at null: no protocol: yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - Base path set to file:///C:/myProgram/yyy.properties以下是我的.properties文件:
-log4j.properties
log4j.rootLogger=error-xxx.properties
log4j.rootLogger=error--是的.房产
log4j.rootLogger=error我的主要方法是这样开始的:
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Logger.getRootLogger().setLevel(Level.ERROR);log4j.properties文件在没有问题的情况下很好地加载,并且对"log4j.rootLogger=error“很满意。(如果我添加',R‘或',stdout’,就像我在other SO questions上看到的那样,它会抱怨,但我怀疑这是因为我在Windows上。)
如果这是不可能的,让我知道,我会接受它,接受它,并停止寻找。
这个项目是由大量用户使用windows、mac和linux运行的。(该项目是一个测试工具,供需要运行Jars集合的开发人员使用,并为集合开发新的Jars)
-编辑
我已经研究过在我的项目的src/main/ log4j.xml文件夹中放置一个的建议,但是无法让它工作。
我读到的所有内容都表明log4j.xml应该可以工作,但是我已经没有东西可以尝试了。作为最后一次尝试,我试图谷歌:"org.apache.commons.configuration“调试停止和谷歌送我自己的问题哈哈。
下面是我的log4j.xml,它似乎不会在每次初始化类时(每秒发生几百次)从每个jar调试打印停止org.apache.commons.configuration。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="CA" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<logger name="org.apache.commons.configuration">
<level value="error"/>
</logger>
<root>
<priority value="off"/>
<appender-ref ref="CA"/>
</root>
</log4j:configuration>我重建了我的项目,重新包装了我的罐子。我希望我不必将log4j.xml放在每个Jar的资源文件夹中?:/
是否有一种方法可以查看它是否正在加载log4j.xml文件?
我需要做些什么来让所有的Jars都使用这个log4j来实例化自己的log4j.xml实例吗?
我现在尝试了一下我的主要方法:
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.xml");
Logger.getRootLogger().setLevel(Level.ERROR);但是我仍然看到控制台中有来自org.apache.commons.configuration的调试消息。
-编辑2 --
还是卡住了。我试着简化为一个非常基本的例子,调试输出仍然出现在控制台中。
以下是我的主要方法:
public static void main(String[] args) throws ConfigurationException {
PropertyConfigurator.configure("log4j.xml");
Logger.getRootLogger().setLevel(Level.ERROR);
PropertiesConfiguration config = new PropertiesConfiguration("log4j.xml");
}以下是进口商品:
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;第3行将显示此输出:
10:04:08.526 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to log4j.xml
10:04:08.536 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is log4j.xml
10:04:08.536 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file log4j.xml at null: no protocol: log4j.xml
10:04:08.546 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path log4j.xml下面是我确认的log4j.xml,它是通过重命名并看到加载文件错误来加载的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<root>
<level value="error"/>
<priority value="off"/>
</root>
<logger name="org.springframework">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons.configuration">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons.configuration.PropertiesConfiguration">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache">
<level value="error"/>
<priority value="off"/>
</logger>
</log4j:configuration>发布于 2020-03-25 14:06:21
我创建了一个名为"logback-test.xml“的文件,并尝试将其放入我能想到的每个可能的文件夹中,最后如果我将它放在这里”Log4JTest \out\project\Log4JTest“(其中Log4JTest是我的测试IntelliJ项目的名称),那么就会找到它。
环回-test.xml有以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.apache" level="OFF"/>
</configuration>它似乎已经完成了任务!
这是我的Main.java
package com.company;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
public class Main {
public static void main(String[] args) throws ConfigurationException {
PropertiesConfiguration config = new PropertiesConfiguration("log4j.xml");
}
}这是输出控制台:
Connected to the target VM, address: '127.0.0.1:50725', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:50725', transport: 'socket'
Process finished with exit code 0现在要测试整个项目..。如果它解决了原来的问题,它将标记为“已解决”。
https://stackoverflow.com/questions/60655068
复制相似问题