2016-06-17 68 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);