天天看點

程式員因重複記錄日志撐爆ELK被辭退!(上)1 logger配置繼承關系錯誤

由于日志配置繁雜,很多同學喜歡直接cv其他項目或網上部落格的配置檔案,而不仔細研究每個配置項。最常見的就是重複記錄日志,這不但給檢視和統計帶來不必要麻煩,還會增加磁盤和日志收集系統負擔。

下面看幾個常見導緻該錯誤的案例,大家引以為戒,避免被辭退。

1 logger配置繼承關系錯誤

定義方法記錄debug、info、warn、error四種日志:

程式員因重複記錄日志撐爆ELK被辭退!(上)1 logger配置繼承關系錯誤

Logback配置

程式員因重複記錄日志撐爆ELK被辭退!(上)1 logger配置繼承關系錯誤

配置看沒啥問題,但執行方法後明顯記錄重複了:

程式員因重複記錄日志撐爆ELK被辭退!(上)1 logger配置繼承關系錯誤

錯因

CONSOLE這個Appender同時挂載到倆Logger,定義的

<logger>

<root>

,由于定義的

<logger>

繼承自

<root>

,是以同一日志既會通過logger記錄,也會發送到root記錄,是以應用包下日志出現重複。

如此配置的初衷是啥?

本想實作自定義logger配置,讓應用内日志暫時開啟DEBUG級别。

其實,這無需重複挂載Appender,去掉

<logger>

下挂載的Appender即可

<logger name="org.javaedge.logging" level="DEBUG"/>      

若自定義

<logger>

需把日志輸出到不同Appender,比如

  • 應用日志輸出到檔案app.log
  • 其他架構日志輸出到控制台

可設定

<logger>

的additivity屬性為false,就不會繼承

<root>  

Appender

程式員因重複記錄日志撐爆ELK被辭退!(上)1 logger配置繼承關系錯誤