我目前正在对使用log4j的项目。 我运行一个测试用例(JUnit的),并想将日志级别设置跟踪,这样我可以看到,如果所有的值是否正确。 在该项目中使用的日志记录类包含类似下面的一行:
private static final Log LOG = LogFactory.getLog(MatchTaskTest.class);
并使用像这样做的实际调试
LOG.trace("value");
我从来没有使用log4j的,没有任何人知道我可以简单地最好在Eclipse的运行配置对话框中定义的参数修改日志级别只是为了测试用例。
使用其他配置文件
也许你可以指向其他配置文件。
java -Dlog4j.configuration=config file yourApp
哪里:
-
config
,你的文件配置,例如log4j.properties
或log4j.xml
。 -
file
,日志文件,如myApp.log
-
yourApp
,你的应用程序,如MyAppGUI
或者你可以使用一个类
java -Dlog4j.configurationClass=config class yourApp
哪里:
-
config
,你的文件配置,例如log4j.properties
或log4j.xml
。 -
class
,任何自定义初始化类,如LogManager
,应当执行org.apache.log4j.spi.Configurator
-
yourApp
,你的应用程序,如MyAppGUI
你可以看到在Apache的log4j的1.2 -简短的介绍的log4j的默认初始化步骤部分。
修改编程水平
此外,您还可以使用提供的方法Logger
类,像public void setLevel(Level level)
,例如:
Logger.getRootLogger().setLevel(Level.TRACE);
由于您只想出于测试目的,你可以使用它们。 但建议,因为他们覆盖默认配置参数硬编码不要在客户端代码中使用。 最好的办法是使用外部配置文件。
在您的JUnit类认沽:
Logger.getRootLogger().setLevel(Level.TRACE);
所测试的方法的执行之前的某个地方。 这将设置根记录追查的阈值水平。
如果你使用Maven的时候,你可以有两个log4j的配置文件:
- 一个在的src / main /资源,包括您的生产测井配置
- 一个放在src /测试/资源,包括您的测试时间日志记录配置
Maven会自动使用后者的测试时间,并捆绑前到您的神器(JAR,WAR等),以便它在生产中使用。 你不必用命令行开关或任何更动。
我不认为这是可能的。
配置文件将会让你什么配置日志消息实际日志中的表面,而不是什么水平会在记录每个消息。 这是有道理的 - 的配置应该不会影响邮件的水平。
该javadoc的有每个日志级别和通用日志方法,这需要在优先级的方法,所以我不知道还有的甚至要设置默认。
您可以通过在命令行中显式地设置一个配置文件-Dlog4j.configuration=<FILE_PATH>
所以你可以设置为测试用例特定的配置。
我不知道为什么有些上面并没有为我工作。 (我不想写配置文件)。 我下面的作品
Logger log1 = Deencapsulation.getField(Some.class,"logger");
log1.setLevel(Level.DEBUG);
其实,我把它放在@Before方法。 但我相信它可以(也应该)被放置在@BeforeClass。
如果您在类体内设置它,你会得到编译器错误。