1. 程式人生 > >老生常談SpringAop日誌收集與處理做的工具包

老生常談SpringAop日誌收集與處理做的工具包

#### AopLog是基於Spring Aop 和ThreadLocal實現的一個專門對請求方法內容日誌的攔截與處理的日誌工具包。 ![](https://img.shields.io/static/v1?label=release&message=2.1&color=green)![](https://img.shields.io/static/v1?label=jar&message=16k&color=green)![](https://img.shields.io/badge/License-Apache%202.0-blue.svg)![](https://img.shields.io/badge/JDK-1.8+-red.svg) 場景 : 1. 使用Spring Aop攔截引數日誌目前大部分做法都基本上大同小異,不想日後每個專案工程都寫一份這樣的Aop攔截處理日誌的程式碼,甚至程式碼侵入。 2. 我想知道一些相對重要的請求方法的請求引數,響應引數,請求頭,以及內部耗時,方法是成功還是失敗等等資訊。發生錯誤時我也不知道執行到哪一步發生了異常,是不是某個引數導致出的邏輯問題。 3. 普通的log.info或warn資訊沒有所屬請求的上下關係,並不方便檢視和分析。 4. 正式環境中,我並不想列印太多無意義的info日誌(有些只是為了排查問題列印的日誌,程式正常執行時其實毫無意義),只希望在發生異常時記錄日誌或者只希望每次請求只記錄一條次關鍵的請求資訊。 5. 日誌的收集,我希望將這些請求的日誌記錄下來,記錄的實現方式我自己決定,比如正常的日誌列印,常見的日誌寫入資料庫,日誌寫入到檔案,日誌入佇列等等。 6. 整個日誌的記錄完全不干擾正常請求方法的流程,日誌的收集處理非同步化,完全不影響正常請求方法的效能與響應。 7. 只需要通過`@AopLog`註解決定是否記錄。 ### 快速開始 #### 專案通過maven的pom.xml引入 ```xml ``` #### 或者通過gradle引入 ```gradle compile group: 'com.github.ealenxie', name: 'aop-log', version: '2.1' ``` #### @AopLog註解使用,進行日誌記錄 直接在類(作用類的所有方法)或類方法(作用於方法)上加上註解@AopLog,進行日誌記錄 例如 : ```java import com.github.AopLog; import name.ealen.infra.base.resp.RespBody; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author EalenXie create on 2020/6/22 14:28 */ @AopLog(type = "測試",stackTraceOnErr = true) @RestController public class AppController { @GetMapping("/app/sayHello") public