使用Log4J 2以编程方式配置记录器?

时间:2016-06-27 22:16:00

标签: java log4j2

使用SLF4J,我可以从类中获取记录器并配置日志级别,如下所示:

private static Logger logger = (Logger) LoggerFactory.getLogger(SomeClass.class.getName());
logger.setLevel(Level.TRACE);

我如何对log4j 2进行相同的操作?

2 个答案:

答案 0 :(得分:4)

你这样做:

// org.apache.logging.log4j.core.config.Configurator;

Configurator.setLevel("com.example.Foo", Level.DEBUG);

// You can also set the root logger:
Configurator.setRootLevel(Level.DEBUG);

请参阅常见问题解答:https://logging.apache.org/log4j/2.x/faq.html#reconfig_level_from_code

加里

答案 1 :(得分:4)

首先,SLF4J不提供对setLevel的支持 - SLF4J Logger接口没有setLevel方法。作为API,SLF4J完全不知道日志记录实现如何执行配置。

如果查看示例代码,您将看到对Logger的强制转换 - 这是一个ch.qos.logback.classic.Logger,这意味着当您执行此操作时,您将与Logback绑定。

Gary的回答是正确的,它突出了Log4j 2和Logback之间的一个基本区别。使用Logback,配置与您从LoggerFactory获得的相同Logger密切相关。使用Log4j,您将通过配置修改级别,该配置与应用程序获取的记录器完全分开。