1. 程式人生 > 其它 >全鏈路日誌級別控制

全鏈路日誌級別控制

痛點:日誌難排查,受成本的原因,又不能隨便打日誌,生產環境發版本流程困難,生產環境不支援動態調整日誌級別。

解決思路:主要在以下場景考慮日誌級別的建立

1. 從發起方來解決建立的問題

HTTP請求

如果是HTTP請求,通過前段Header增加logLevel=DEBUG來進行初始化

定時器

使用spring@schedule由於他是自己觸發的,所以無法來實現,或者說藉助key,redis來實現,但是太麻煩

所以建議從XXL-JOB中下手,xxl-job可以主動觸發定時器,並且可以自定義引數,即可自定義LogLevel=DEBUG來實現此功能

2. 從接收方來解決中轉傳遞的問題

MQ訊息

通過MQ的properties進行傳遞,藉助message advice 攔截器進行傳遞

DUBBO

使用dubbo consumerFilter providerFilter 來實現傳遞即可

OPEN Feign

跟HTTP請求實現方式一致,需要藉助到Feign Interceptor來實現傳遞,需要注意的是,如果是執行緒隔離,需要考慮Threadlocal的可傳遞性

日誌框架修改支援

以上只解決了logLevel=DEBUG的建立及在微服務之間傳遞的問題

如何修改日誌框架原始碼以支援上述目標

以上為log4j2的Logger.java

在isEnable 中 增加過濾判斷來實現即可。