2012-04-12 39 views
2

的日誌級別應使用,是org.slf4j.logger.Logger.trace or debug用於記錄的低水平開發日誌?哪個日誌級別應該用於開發人員登錄特定日誌

+3

這是非常主觀的,基本上你需要建立在你們團隊的一些慣例。我曾試圖定義一些規則:http://nurkiewicz.blogspot.com/2010/05/clean-code-clean-logs-logging-levels.html - 但這取決於你。 – 2012-04-12 08:47:48

回答

2

這是一個很好的清單描述日誌級別:

  • 調試 這是最詳細的日誌記錄(最大音量設置)。我通常認爲Debug是生產系統的界限,並且僅用於開發和測試。我更傾向於讓自己的日誌記錄級別恰到好處,這樣我就可以獲得足夠的信息,並努力在信息級別或更高級別登錄。

  • 信息 信息級別通常用於輸出對系統運行和管理有用的信息。信息還將用於記錄應用程序關鍵區域中的進入和退出點。但是,您可以選擇在調試級別添加更多入口和出口點,以便在開發和測試期間獲得更多粒度。

  • 警告 警告通常用於處理「異常」或其他重要的日誌事件。例如,如果您的應用程序需要配置設置,但在缺少設置的情況下有默認設置,則應使用警告級別記錄缺失的配置設置。

  • 錯誤 錯誤用於記錄所有未處理的異常。這通常記錄在應用程序邊界的catch塊中。

  • 致命 致命是保留的特殊例外/條件,您可以快速挑選這些事件是必要的。我通常不會指望在應用程序的開發早期使用致命。通常情況下,只有憑藉經驗,我才能確定值得致命致命的致命綽號體驗的具體事件。畢竟,錯誤是一個錯誤。

http://thejoyofcode.com/Logging_Levels_and_how_to_use_them.aspx

1

取決於你的意思是開發商日誌什麼。如果你的意思是調試信息,顯然應該使用DEBUG

人們往往如果能夠使用TRACE爲非常細粒度的日誌,如方法入口,方法退出等,這將垃圾日誌文件。

這種方法可能會給你一個例子。

public String fetchMessage(long id) { 
    logger.entry(id); 

    logger.debug("Retrieving message from database"); 

    String message = this.messageService.fetchMessageById(id); 

    logger.exit(message); 
} 
0

這取決於您當地的工作流程以及您的工作方式。

我們的經驗法則是,信息總是在,DEBUG在生產中需要法醫分析時記錄,但TRACE沒有登錄開發商機外。

這意味着,如果你需要有提供給您的信息進行調查,記錄它在調試。如果不是,請記錄它的蹤跡。

1

日誌對於調試非常重要的,有時故障排除。它很好記錄所有必需的信息。然而,過度採伐也可能妨礙性能,例如編寫長的XML消息或類似的東西。

這就是爲什麼有不同級別可用於記錄。需要爲信息種類選擇合適的級別。

例如在catch塊中具有錯誤級別的日誌。

catch (Exception e) { 
    log.error("Exception... information."); 
} 

一直需要一些明顯的信息。
log.info(「log info」); //基本信息 - 總是打開

調試級別信息
log.debug(「debug values ...」); //可以根據需要打開此級別。

它可以節省過多的日誌。

拇指規則: - 從不在日誌中記錄敏感信息。

0

其實沒有「開發日誌」和「用戶日誌」。 每個軟件包應包含一個獨立的API,其中包含自己的概念和

你稱之爲「開發者日誌」可能是你的應用程序的「內核」的一個子部分,你所稱的「用戶日誌」將是「命令行」或「UI」部分。

每個軟件包都應該獨立考慮其自身的對象模型和業務規則。在這個世界中,通常在頂層上有一個「Public」部分,它處理用例的基本步驟。您還有一個用於擴展功能的「受保護的」零件和用於滿足您內部需求的「專用零件」零件。 這可以存儲在不同的* java包 * s以​​分層的方式。 您的記錄練習應該基於這個圖層方案。

好的做法是使用一個API,例如java.logginglog4j的 ...至極允許您登錄一個包名的基礎。

信息應該是基本的高層次的步驟,這意味着在你的包的頂層公共方法會發生什麼。

調試應該是一個更精細的糧食,仍然不會影響性能。

TRACE應該用於可能導致性能問題的非常詳細的日誌。記住,總是包裹調用trace()的一個IF(水平== TRACE)內,所以你不執行建設一個消息的一些無用的任務...等

WARN當有異常情況可以辦理。

ERR當一個異常沒有處理,但沒有導致關閉主線程。當我不得不終止整個過程時,

祝你好運!

雷諾