设置log4j的日志级别(Set log4j log level)

2019-06-24 13:15发布

我目前正在对使用log4j的项目。 我运行一个测试用例(JUnit的),并想将日志级别设置跟踪,这样我可以看到,如果所有的值是否正确。 在该项目中使用的日志记录类包含类似下面的一行:

private static final Log LOG = LogFactory.getLog(MatchTaskTest.class);

并使用像这样做的实际调试

LOG.trace("value");

我从来没有使用log4j的,没有任何人知道我可以简单地最好在Eclipse的运行配置对话框中定义的参数修改日志级别只是为了测试用例。

Answer 1:

使用其他配置文件

也许你可以指向其他配置文件。

java -Dlog4j.configuration=config file yourApp

哪里:

  • config ,你的文件配置,例如log4j.propertieslog4j.xml
  • file ,日志文件,如myApp.log
  • yourApp ,你的应用程序,如MyAppGUI

或者你可以使用一个类

java -Dlog4j.configurationClass=config class yourApp

哪里:

  • config ,你的文件配置,例如log4j.propertieslog4j.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);

由于您只想出于测试目的,你可以使用它们。 但建议,因为他们覆盖默认配置参数硬编码不要在客户端代码中使用。 最好的办法是使用外部配置文件。



Answer 2:

在您的JUnit类认沽:

Logger.getRootLogger().setLevel(Level.TRACE);

所测试的方法的执行之前的某个地方。 这将设置根记录追查的阈值水平。



Answer 3:

如果你使用Maven的时候,你可以有两个log4j的配置文件:

  • 一个在的src / main /资源,包括您的生产测井配置
  • 一个放在src /测试/资源,包括您的测试时间日志记录配置

Maven会自动使用后者的测试时间,并捆绑前到您的神器(JAR,WAR等),以便它在生产中使用。 你不必用命令行开关或任何更动。



Answer 4:

我不认为这是可能的。

配置文件将会让你什么配置日志消息实际日志中的表面,而不是什么水平会在记录每个消息。 这是有道理的 - 的配置应该不会影响邮件的水平。

该javadoc的有每个日志级别和通用日志方法,这需要在优先级的方法,所以我不知道还有的甚至要设置默认。

您可以通过在命令行中显式地设置一个配置文件-Dlog4j.configuration=<FILE_PATH>所以你可以设置为测试用例特定的配置。



Answer 5:

我不知道为什么有些上面并没有为我工作。 (我不想写配置文件)。 我下面的作品

Logger log1 = Deencapsulation.getField(Some.class,"logger");
log1.setLevel(Level.DEBUG);


Answer 6:

其实,我把它放在@Before方法。 但我相信它可以(也应该)被放置在@BeforeClass。

如果您在类体内设置它,你会得到编译器错误。



文章来源: Set log4j log level