簡體   English   中英

Log4j 2. 如何獲取log4j 的調試信息?

[英]Log4j 2. How get log4j's debug messages?

據我了解,log4j 可以處理系統屬性 -Dlog4j.debug。 如果您使用它運行您的應用程序,您將獲得 log4j 的調試輸出。

示例:java -Dlog4j.debug -jar test.jar

log4j 2 有類似的東西嗎?

2018 年 1 月更新:

從 Log4j 2.10 開始,這很簡單:只需使用系統屬性log4j2.debug運行您的程序(不需要值;空字符串就可以)。


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

  • 在找到配置之前,可以使用系統屬性org.apache.logging.log4j.simplelog.StatusLogger.level控制狀態記錄器級別。
  • 找到配置后,可以在具有“status”屬性的配置文件中控制狀態記錄器級別,例如: <Configuration status="trace">

更新:在 log4j-2.2 中改進了文檔

可能會令人困惑,Log4J 1.x 命令行參數-Dlog4j.debug的最近等效-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 之間有所不同。

我在啟動和運行 Log4J2 時遇到了令人沮喪的困難,打印 StatusLogger 也不例外。 從理論上講,您可以使用status字段在配置文件中設置它,但是到目前為止我還無法完成這項工作。

但是,您可以在 main 方法的開頭運行以下內容:

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

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

如果有人需要以編程方式設置DEBUG級別

// for your custom logger
Configurator.setLevel("com.name.of.logger", Level.DEBUG);
// for root logger
Configurator.setRootLevel(Level.DEBUG);

或沒有進口

org.apache.logging.log4j.core.config.Configurator.setLevel(
    "com.name.of.logger", 
    org.apache.logging.log4j.Level.DEBUG
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM