关于日志组件的思考
日志組件到底應該具備什么能力?選擇合適的日志實現,比如log4j2、logback等。擴展日志格式,定制化自己的日志格式固定日志路徑,保證線上日志路徑統一請求ID、TraceID等信息的打印、傳遞。(傳遞可考慮鏈路工具)定制相關的API、提供一些友好的API。開放的日志級別調整mybatis sql日志開關控制臺日志打印開關日志保留時長日志分割方式異步開關、異步隊列長度、超長是否丟棄異常堆棧的深度日志丟棄策略,比如磁盤容量不夠時保留warn和error日志,丟棄info、log、debug級別日志。忽略打印,哪些接口、哪些對象不打印,配置列表日志組件本質是什么?
擴展字段、擴展格式、靈活控制日志策略。
我司的一些實現
以上80%的功能
定義filter和spring interceptor通過header獲取前端\網關傳過來的request-id。然后放入到MDC里。
在Dubbo filter里透傳request-id
在filter里打印notice級別日志(包含入參、出參、耗時等信息)此日志量比較大,結合日志組件實現開關配置,后續通過配置中心調整輸出
結合配置中心實現動態調整日志級別
關于為什么要強制統一
統一格式,方便實現日志收集、分析、提供日志平臺進行搜索。
統一路徑,方便日志收集、方便日志磁盤控制,不會誤將日志打印到系統盤。
?
總結
- 上一篇: Linux系统中安装nodejs的步骤教
- 下一篇: 如何5分钟秒懂Java之基础入门篇 第一