Java 開發中常用的日誌模組

seeyoumeet發表於2021-04-24

slf4j 的全稱是 Simple Loging Facade For Java,即它僅僅是一個為 Java 程式提供日誌輸出的統一接 口,並不是一個具體的日誌實現方案,就比如 JDBC 一樣,只是一種規則而已。所以單獨的 slf4j 是不 能工作的,必須搭配其他具體的日誌實現方案,比如 apache 的 org.apache.log4j.Logger,jdk 自帶 的 java.util.logging.Logger 等。

Log4j 是 Apache 的一個開源專案,通過使用 Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、 檔案、GUI 元件,甚至是套介面伺服器、NT 的事件記錄器、UNIX Syslog 守護程式等;我們也可以控 制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程。

Log4j 由三個重要的組成構成:日誌記錄器(Loggers),輸出端(Appenders)和日誌格式化器(Layout)。

1.Logger:控制要啟用或禁用哪些日誌記錄語句,並對日誌資訊進行級別限制

2.Appenders : 指定了日誌將列印到控制檯還是檔案中

3.Layout : 控制日誌資訊的顯示格式

Log4j 中將要輸出的 Log 資訊定義了 5 種級別,依次為 DEBUG、INFO、WARN、ERROR 和 FATAL, 當輸出時,只有級別高過配置中規定的 級別的資訊才能真正的輸出,這樣就很方便的來配置不同情況 下要輸出的內容,而不需要更改程式碼。

簡單地說,Logback 是一個 Java 領域的日誌框架。它被認為是 Log4J 的繼承人。 Logback 主要由三個模組組成:logback-core,logback-classic。logback-access 、logback-core 是其它模組的基礎設施,其它模組基於它構建,顯然,logback-core 提供了一些關鍵的

通用機制。

logback-classic 的地位和作用等同於 Log4J,它也被認為是 Log4J 的一個改進版,並且它實現了簡單 日誌門面 SLF4J;

logback-access 主要作為一個與 Servlet 容器互動的模組,比如說 tomcat 或者 jetty,提供一些與 HTTP 訪問相關的功能。

3.1. Logback 優點

  • 同樣的程式碼路徑,Logback 執行更快

  • 更充分的測試

  • 原生實現了 SLF4J API(Log4J 還需要有一箇中間轉換層)

  • 內容更豐富的文件

  • 支援 XML 或者 Groovy 方式配置

  • 配置檔案自動熱載入

  • 從 IO 錯誤中優雅恢復

  • 自動刪除日誌歸檔

  • 自動壓縮日誌成為歸檔檔案

  • 支援 Prudent 模式,使多個 JVM 程式能記錄同一個日誌檔案

  • 支援配置檔案中加入條件判斷來適應不同的環境

  • 更強大的過濾器

  • 支援 SiftingAppender(可篩選 Appender)

  • 異常棧資訊帶有包資訊

ELK 是軟體集合 Elasticsearch、Logstash、Kibana 的簡稱,由這三個軟體及其相關的元件可以打 造大規模日誌實時處理系統。

  • Elasticsearch 是一個基於 Lucene 的、支援全文索引的分散式儲存和索引引擎,主要負責將 日誌索引並儲存起來,方便業務方檢索查詢。
  • Logstash 是一個日誌收集、過濾、轉發的中介軟體,主要負責將各條業務線的各類日誌統一收 集、過濾後,轉發給 Elasticsearch 進行下一步處理。
  • Kibana 是一個視覺化工具,主要負責查詢 Elasticsearch 的資料並以視覺化的方式展現給業 務方,比如各類餅圖、直方圖、區域圖等。

Java 開發中常用的日誌模組

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章