首頁>技術>

Log4J2簡介

日誌就是記錄程式執行的系統資訊和業務資訊。當系統出現線上故障時通常會透過ELK查詢日誌定位問題。

JavaCore整合Log4j2

在使用之前需要整合到java-core專案中,也就是將log4j2的maven依賴配置到java-core的pom.xml檔案中。

Log4j2在java-core專案中的使用

在將log4j2整合到java-core專案後,就可以用來記錄程式的日誌資訊。

log4j2的使用非常簡單,只需要在使用類中建立一個org.apache.logging.log4j.Logger物件,然後在方法中呼叫該物件提供的方法即可。

當程式執行時Log4j2會讀取預設的配置檔案,該檔案的作用是預設情況下Log4j2只會按照指定的格式將error級別的日誌輸出到控制檯中。

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN">   <Appenders>     <Console name="Console" target="SYSTEM_OUT">       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>     </Console>   </Appenders>   <Loggers>     <Root level="error">       <AppenderRef ref="Console"/>     </Root>   </Loggers> </Configuration>

Log4j2中的日誌級別按照從高到低的優先順序排序一共有八個:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL

All:最低等級的,用於開啟所有日誌記錄.Trace:是追蹤,就是程式推進以下,你就可以寫個trace輸出,所以trace應該會特別多,不過沒關係,我們可以設定最低日誌級別不讓他輸出.Debug:指出細粒度資訊事件對除錯應用程式是非常有幫助的.Info:訊息在粗粒度級別上突出強調應用程式的執行過程.Warn:輸出警告及warn以下級別的日誌.Error:輸出錯誤資訊日誌.Fatal:輸出每個嚴重的錯誤事件將會導致應用程式的退出的日誌.OFF:最高等級的,用於關閉所有日誌記錄.

org.apache.logging.log4j.Logger類針對8個日誌級別封裝了8個方法以及其他過載的方法

程式會列印高於或等於所設定級別的日誌,設定的日誌等級越高,打印出來的日誌就越少。日常專案開發中日誌不是列印越多越好,它的作用本身就是為了幫我們更加精準的定位問題,因為日誌列印和程式一樣也會佔據磁碟IO,網路,CPU,記憶體等硬體資源。通常線上環境常用Info列印系統業務日誌,Error列印系統異常日誌。本地環境和測試環境可以列印Debug日誌。

一般開發專案時都會自己去定義一個log4j2.xml檔案去覆蓋預設的配置,log4j2.xml檔案必須放在src/main/resouce目錄下

我這裡準備了一個log4j2.xml檔案,該檔案只能用於控制檯輸出。並且每個節點的配置都已經給出了詳細的註釋說明。

在進行專案開發時不會使用System.out.println()列印輸出語句,而使用org.apache.logging.log4j.Logger物件的方法替代。不過日誌不僅僅是輸出在控制檯,在公司使用SpringBoot開發應用時,使用者透過java應用程式的Slf4j寫入日誌,SpringBoot預設使用的是logback。我們透過實現自定義的Appender將日誌寫入Kafka,同時Logstash透過input外掛操作Kafka訂閱其對應的主題。當有日誌輸出後被Kafka的客戶端Logstash所收集,經過相關過濾操作後將日誌寫入Elasticsearch,此時使用者可以透過Kibana獲取Elasticsearch中的日誌資訊。

Log4j2與Lombok整合

Lombok官網

Lombok提供了一些註解用於生成常用的方法,在編譯時將帶有Lombok註解的Java檔案正確編譯成完整的class檔案。目前IDEA2020.3商業版中已經將Lombok作為自帶外掛整合,如果在IDEA2020.3以後的版本無序額外安裝外掛就可以使用。

但是要使用Lombok提供的一些註解,還需要引用Lombok的Maven依賴

IDEA中會提示log等價於之前手動建立的org.apache.logging.log4j.Logger物件

18
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 面試:Redis筆記整理(3分鐘理清常問知識點)