使用SLF4J,我可以从类中获取记录器并配置日志级别,如下所示:
private static Logger logger = (Logger) LoggerFactory.getLogger(SomeClass.class.getName());
logger.setLevel(Level.TRACE);
我如何对log4j 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,您将通过配置修改级别,该配置与应用程序获取的记录器完全分开。