2010-02-13 127 views
7

我正在開發一個java應用程序,我必須使用日誌記錄機制。現在我很困惑選擇Java庫記錄器或去Log4j記錄器。使用java.util.logging和Log4j Logger的區別

所以我想知道什麼時候我可以去java日誌記錄器 ,當我可以去log4j記錄器。

回答

10

我建議你去SLF4J而不是你的應用程序從特定的日誌框架分離。它具有各種流行日誌框架的適配器,如Jakarta日誌記錄,JDK1.4日誌記錄,log4j等,使其成爲日誌記錄需求的良好抽象。

+0

一旦去SLF4J,那麼也去LogBack,因爲它是log4j(同一作者)的改進版本。 – Verhagen 2010-02-13 15:10:54

3

記錄器類不是早期的jdk的一部分,所以幾個庫實現彈出。 Log4j庫有一套最全面的日誌工具(格式化工具,附加程序等)。但是,對於大多數開發人員來說,這將是一個矯枉過正的問題,簡單的java.util.Logger就足夠了。

我個人對我的記錄器實現使用自定義包裝。這使我能夠定義自定義調用來執行功能記錄/審計。

+0

即使對於簡單的任務,Log4j也比'java.util.logging'更可取,它只是簡單的討厭 – skaffman 2010-02-13 11:27:17

+0

可能不是!我記得我弟弟的朋友之一發送他的任務,因爲log4j依賴關係,它不會運行。問題在於類路徑,他的評論者並不那麼印象深刻。有些人只是不願意學習。 – questzen 2010-02-13 11:55:19

+2

是的,謝天謝地,你兄弟的朋友的家庭作業不能控制Java中的什麼是和不好的做法。 – skaffman 2010-02-13 13:03:16

2

我發現Log4j在調整日誌記錄cfg時沒有在生產環境中重新編譯代碼時更靈活。

+0

是的,我總是選擇/建議使用log4j,而不是默認的Java日誌記錄。然後我發現了公共日誌,在啓動時可以做出這個決定。這很好,因爲可能在生產標準中需要Java(無論出於何種原因)。在開發過程中,您擁有log4j的靈活性/強大功能。但是現在我不再使用這兩個包了!我建議現在使用的軟件包是SLF4J(http://www.slf4j.org/)和BackLog(http://logback.qos.ch/)。 – Verhagen 2010-02-13 15:18:18

3

Apache Commoms Logging項目和SLF4J,其中任一個抽象底層日誌記錄庫。

在實踐中,我傾向於使用Log4J來構建日誌記錄類。主要是因爲可以在應用程序服務器中爲每個Web應用程序配置Log4J,而每個JVM配置JDK日誌記錄。

+0

Commons Logging曾經有嚴重的classpath loader問題。小心。 – 2010-02-13 11:22:39

+0

僅限某些特定環境;在大多數情況下,這很好。 – skaffman 2010-02-13 11:27:55

+1

事實上,您可以將SLF4J看作公用日誌記錄的改進版本。 – Verhagen 2010-02-13 15:13:05

3

我現在推薦的方法是使用SLF4J作爲日誌API。然後,您可以在發現它們時根據您的需要選擇日誌框架。

我寫了一篇關於我認爲是開始使用SLF4J和一個簡單的「登錄到System.out」的最佳實踐的文章。 http://runjva.appspot.com/logging101/index.html

希望它有幫助。