1. 程式人生 > >您需要了解的4種日誌類型 :Java

您需要了解的4種日誌類型 :Java

可能 日誌記錄 發送 還需要 問題 lib 討論 bsp 活動

日誌記錄是軟件開發中的一個重要主題,特別是如果您需要分析生產環境中的錯誤和其他意外事件。實現日誌記錄通常很容易。但正如您可能經歷過的那樣,日誌記錄遠比看起來復雜得多。這就是為什麽你可以在博客上找到很多關於它的文章。

作為一名經驗豐富的開發人員,您應該了解可用的不同日誌框架,常見缺陷和最佳實踐,當然還有常見部署方案中使用的日誌文件類型。在本文中,我將重點關註後者。我將告訴您幾乎所有開發或生產環境中可以找到的四種不同類型的日誌。

應用程序日誌
讓我們從最常見的日誌類型開始:應用程序日誌。

大多數開發人員在談論日誌記錄時會想到這個日誌。原因很簡單。他們的應用程序生成此日誌 它包含應用程序編寫的各種錯誤消息,警告或其他事件。這些消息可以提供與特定用例相關的邏輯高級信息。典型的例子是:

用例中發生的異常的堆棧跟蹤。

有關外部系統響應時間較慢的警告消息。

用例被觸發或完成的信息。

應用程序日誌可能是本文中提到的最重要的日誌類型,因為您可以完全控制它。這意味著您負責編寫消息。

每條日誌消息都需要提供有用的信息,以幫助您了解應用程序的行為。如果您想了解有關應用程序日誌的更多信息,您應該查看Eric的文章,其中描述了一組用於應用程序日誌記錄的最佳實踐。

Web和應用程序服務器日誌
下一個有趣且重要的類型是您的Web或應用程序服務器的日誌。

大多數企業應用程序都部署到Web服務器(例如 Apache Tomcat)或應用程序服務器(例如 Wildfly或WebSphere Liberty)。他們的日誌文件為您提供有關技術問題和服務器當前狀態的信息。

每個服務器的配置和功能各不相同,我在本文中不會詳細解釋它們。但請務必檢查服務器的文檔並進行相應配置。從服務器獲取正確的信息可以在識別潛在問題和服務器中斷之間產生差異。

垃圾收集器日誌
所述垃圾收集器提供自動存儲器管理。它跟蹤JVM中實例化的所有對象,並刪除不再使用的對象。這是一項非常復雜的任務,並且有幾種不同的垃圾收集器實現可用。

通常,Java中的垃圾收集過程非常有效。它非常高效,有很多應用程序使用默認實現及其標準配置。但是,如果您的應用程序必須處理高負載或使用大量復雜的對象結構,則應用程序的性能可能會隨著時間的推移而降低。當垃圾收集器需要花費越來越多的時間來管理可用內存時,通常會發生這種情況。垃圾收集器日誌為您提供分析所有垃圾收集器活動的必要信息。

默認情況下,垃圾收集器日誌已停用。您需要使用一組命令行屬性來激活它。

如果您使用的是JDK 8或更早版本,則可以使用以下屬性執行此操作:

  • XX:+ PrintGCDetails - Xloggc:

從JDK 9開始,您需要使用以下屬性:

class = “prettyprint” - Xlog:gc *:file = < gc - log - file - path >

使用這些命令行屬性啟動應用程序後,垃圾收集器將寫入有關所有操作的詳細信息。遺憾的是,生成的垃圾收集器日誌的內容和格式取決於JVM的供應商和版本以及垃圾收集算法。
我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1loab4y69jfje
系統日誌
所有先前討論的日誌都是由JVM或在JVM中運行的應用程序編寫的。除了這些日誌之外,您還應該熟悉操作系統編寫的日誌。

作為Java開發人員,您很可能永遠不會自己寫這些日誌。但是,您的操作系統會將某些事件寫入這些日誌。作為部署的一部分的其他應用程序也可以這樣做。因此,系統日誌是獲取外部事件概述的好地方。

如果您在Windows上運行應用程序,則這是事件日誌。在Linux上,您應該了解syslog服務及其後繼者。

Windows事件日誌
Windows的事件日誌包含類別應用程序,安全性,設置,系統和轉發事件中的重要硬件和軟件事件。

應用程序事件和系統類別對於了解應用程序之外發生的事件特別有用。應用程序類別包含由本地Windows系統上運行的其他應用程序報告的事件。硬件和驅動程序相關事件屬於系統類別。

您可以在本文中了解有關Windows事件日誌的更多信息。

Linux系統日誌記錄
Linux的syslog服務及其後續版本提供了一個高度可配置的日誌記錄系統。它將應用程序或操作系統觸發的消息寫入文件或將其發送到遠程系統。

使用的日誌記錄服務及其配置取決於您的Linux發行版。請查看文檔以了解有關特定操作系統的更多信息。

Ian Shields寫了一篇關於Linux系統日誌記錄的精彩介紹。如果您正在尋找一般性介紹,我建議您閱讀他的Learn Linux,101:系統日誌指南。

結論
記錄是一個具有許多不同方面的重要主題。在本文中,我總結了作為Java開發人員應該了解的四個重要日誌:

應用程序日誌是最明顯的一個。它由您的應用程序編寫,您對其內容負責。

如果將應用程序部署到Web或應用程序服務器中,則還需要了解該服務器提供的日誌。

如果需要分析性能問題,垃圾收集器日誌可以提供重要信息。
社區信息
社區昵稱

dodott
專欄信息
dodott的專欄
你原有的個人站點/博客的文章會遷移至該專欄下,後期會定期同步更新新增文章。
您可以檢查系統日誌,以獲取可能影響您的應用程序並導致服務事件的所有外部事件的概述。
我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1loab4y69jfje

您需要了解的4種日誌類型 :Java