2017-09-04 166 views
2

如何在控制檯應用程序中禁用log4j2的自動初始化?我知道它可以被禁用在servlet上下文中通過如何在控制檯應用程序中禁用log4j2的自動初始化?

<context-param> 
    <param-name>isLog4jAutoInitializationDisabled</param-name> 
    <param-value>true</param-value> 
</context-param> 

但是,如何在控制檯應用程序?我猜:

System.setProperty("isLog4jAutoInitializationDisabled", "true"); 

我試過了,但沒有。

回答

1

當Log4j2初始化時,它需要一個配置。默認配置是將所有ERROR消息記錄到控制檯,其他消息將被忽略。

這通常不是您想要的,您可以通過提供滿足您需求的配置來更改此設置。執行此操作的最常見方法是創建一個文件log4j2.xml並將其放入類路徑中。配置文件syntax在用戶手冊中有很多很多的例子。特別是關於appenderslayouts的頁面可能是感興趣的。

Log4j2還支持在JSON,YAML和屬性格式(從Log4j的-1.2格式不同!)的配置文件,但是大多數的手冊中的例子是XML。

最後,您可以指定配置文件的位置,系統屬性爲log4j.configurationFile,因此不在類路徑中。

如果您在配置時遇到問題,請在配置文件的頂部使用<Configuration status="trace">將內部Log4j2狀態消息打印到控制檯。 (使用WARN將其關閉。)

由於Log4j 2.9,您可以通過指定系統屬性log4j2.debug(不帶值)來啓用內部狀態日誌記錄。這應該有助於解決問題。

相關問題