设置log4j日志级别

Kon*_*itz 23 java logging log4j

我目前正在开发一个使用log4j的项目.我正在运行一个测试用例(junit),并希望将日志级别设置为跟踪,以便我可以查看所有值是否正确.在项目中使用日志记录的类包含如下所示的行:

private static final Log LOG = LogFactory.getLog(MatchTaskTest.class);
Run Code Online (Sandbox Code Playgroud)

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

LOG.trace("value");
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过log4j,有没有人知道如何只为测试用例更改日志级别,最好只需在eclipse的运行配置对话框中定义一个参数.

Pau*_*gas 20

使用其他配置文件

也许你可以指向另一个配置文件.

java -Dlog4j.configuration=config file yourApp
Run Code Online (Sandbox Code Playgroud)

哪里:

  • config,您的配置文件,例如log4j.propertieslog4j.xml.
  • file,日志文件,例如 myApp.log
  • yourApp,你的app,例如 MyAppGUI

或者你可以使用一个班级

java -Dlog4j.configurationClass=config class yourApp
Run Code Online (Sandbox Code Playgroud)

哪里:

  • config,您的配置文件,例如log4j.propertieslog4j.xml.
  • class,任何自定义的初始化类LogManager,都应该实现org.apache.log4j.spi.Configurator
  • yourApp,你的app,例如 MyAppGUI

你可以看到在Apache的log4j的1.2 -简短的介绍的log4j默认初始化程序部分.

以编程方式修改级别

此外,您还可以使用提供Logger类的方法public void setLevel(Level level),例如:

Logger.getRootLogger().setLevel(Level.TRACE);
Run Code Online (Sandbox Code Playgroud)

由于您只想进行测试,因此可以使用它们.但建议不要在客户端代码中使用,因为它们会覆盖硬编码中的默认配置参数.最好的方法是使用外部配置文件.

  • 自 log4j 2 以来,这已发生变化。 setLevel 已被删除。 (2认同)

dan*_*iel 20

在你的junit类中放:

Logger.getRootLogger().setLevel(Level.TRACE);
Run Code Online (Sandbox Code Playgroud)

在执行测试方法之前的某个地方.它会将根记录器的阈值级别设置为TRACE.