2013-10-24 45 views

回答

0

根據LOG4J2-282這可以使用你的配置(log4j2.xml)完成。

看來他們也已經(重新)在log4j-2.0b8中實現了系統屬性,雖然對該JIRA問題的一些評論表明它仍然可能無法正常工作。

0

我已經很難讓Log4J2啓動並運行,並且打印StatusLogger也不例外。從理論上講,你可以在配置文件中使用status字段進行設置,但是我無法做到這一點。

您可以運行在你的主要方法開始但是以下幾點:

StatusConsoleListener listener = new StatusConsoleListener(Level.ALL); 
StatusLogger.getLogger().registerListener(listener); 
LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); // initialize logger 

注意你的main()類不能有任何靜態記錄儀,否則他們會在這之前被初始化被調用,這意味着加載狀態消息不會打印。

5

更新2018年1月:

從Log4j的2.10,這是很簡單:只是系統屬性log4j2.debug運行程序(無需值;空字符串是罰款)。


狀態記錄器上的當前(log4j-2.1)文檔有點混淆。 基本上:

  • 直到構造被發現,狀態記錄器級別可與系統屬性org.apache.logging.log4j.simplelog.StatusLogger.level控制。
  • 找到配置後,可以使用「status」屬性在配置文件中控制狀態記錄器級別,例如:<Configuration status="trace">

更新:documentation在log4j-2.2中得到了改進。

1

可能令人困惑的是,Log4J 1.x命令行參數-Dlog4j.debug的最近等價爲-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace,它將Log4J 2.x「狀態記錄器」級別設置爲跟蹤並提供有關日誌記錄配置的詳細輸出。

Log4J的1.x的允許用戶手動指定使用-Dlog4j.configuration=file:///var/lib/tomcat7/log4j.xml所述配置文件位於/var/lib/tomcat7/log4j.xml在命令行上的配置文件的位置。在Log4J 2.x中,參數-Dlog4j.configurationFile=file:///var/lib/tomcat7/log4j.xml'配置文件'中存在細微的差異,而不是'配置'。

很明顯,您需要確保您的配置文件適用於正在使用的Log4J版本,XML結構在1.x和2.x之間不同。