2016-06-17 127 views
0

我想从log4j 1.x迁移到log4j 2.x(2.6)。我发现像Logger.setLevel()这样的方法在org.apache.log4j.Logger(log4j-api包)中不可用,但在org.apache.log4j.core.Logger(log4j-core包)中可用。使用log4j2核心包vs log4j2 api

所以基本上我被迫使用核心类。那有什么问题吗?或者有什么我可以忽略的?

+0

为什么你需要'setLevel()'? Log4J应该由文本文件(XML)配置。无论如何,看到这个页面:https://logging.apache.org/log4j/2.x/manual/customconfig.html – Andreas

+0

@Andreas它允许更改JMX日志级别。那是怎么用log4j 1.x完成的吗?在2.x中有更好的方法吗? –

+0

为什么不能使用类似 ' ' 在你的log4j2.xml中? 你也可以使用不同的配置 – user2699706

回答

0

来自javadoc与log4j2核心的setLevel方法有关 - “此方法不通过公开API公开,主要用于单元测试。” “请注意,与Log4j 1.x不同,公共Log4j 2 API不会公开任何方法来添加,修改或删除appender和过滤器或以任何方式操作配置。”

&找到了在log4j2网站FAQ页面更改日志级别的方法。仍然使用核心包,但似乎是正确的方式来做到这一点。

// 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);