問題定位切面和日誌上列印請求唯一log標識

2021-10-10 20:50:18 字數 3175 閱讀 2526

這篇部落格主要是針對我們前期部分介面不穩定和有部分介面需要大量業務溝通介面,針對請求引數和返回引數進行列印。部分介面呼叫邏輯鏈過長,不易分析新增同乙個請求的引數新增唯一標識,防止併發比較大情況,找不到同一請求介面的上下文資訊。

1、構建乙個註解用於放置在需要列印介面上面

@

documented

@target

(elementtype

.method)@

retention

(retentionpolicy

.runtime)@

inherited

public

@inte***ce

logannotation

2、設定針對列印註解的controller類進行切面

@

component

@aspect

@log4j2

public

class

requestlogaspect

@around

("request(logannotation)"

)public

object

doaround

(proceedingjoinpoint

proceedingjoinpoint

,logannotation

logannotation

)throws

throwable",

paramresult);

return

result;}

@afterthrowing

(pointcut

="request(logannotation)"

,throwing

="e"

)public

void

doafterthrow

(joinpoint

joinpoint

,logannotation

logannotation

,runtimeexceptione)

",json

.tojsonstring

(requesterrorinfo))

;}/*

獲取入參*@

param

proceedingjoinpoint**

@return**

/private

map<

string

,object

>

getrequestparamsbyproceedingjoinpoint

(proceedingjoinpoint

proceedingjoinpoint

)private

map<

string

,object

>

getrequestparamsbyjoinpoint

(joinpoint

joinpoint

)private

map<

string

,object

>

buildrequestparam

(string

paramnames

,object

paramvalues

)requestparams

.put

(paramnames[i

],value);

}return

requestparams;}

}

4、構建需要列印出來引數說明

@

data

public

class

requesterrorinfo

@data

public

class

requestinfo

1、構建***,設定id

}2、將***放置到每乙個請求進行請求

@

configuration

public

class

admincommonconfig

implements

webmvcconfigurer

@override

public

void

addinterceptors

(interceptorregistry

registry

)}

3、修改log4j2.xml檔案

在列印格式中新增[}]

4、檢視列印結果

切面日誌列印

需求目的 對目前專案中的各種方法進行列印其日誌資訊,方便bug排查 方法採用切面方法進行列印 設定註解類 日誌註解 public inte ce operatelog設定切面類 aspect slf4j component public class operatelogaspect catch th...

關於分析定位問題和日誌列印策略的思考

作為開發人員,在產品迭代過程中時常會遇到問題需要分析定位,而在分析和定位過程中一般要借助工具,要是能根據問題的現象就能找到原因,那麼對快速改進產品品質無疑是一種很大的提公升。那麼如何做才能達到這樣的效果呢?我個人認為要把握這兩點 1 後端在遇到異常錯誤處理流程時要將狀態碼和簡潔明瞭的描述資訊組合成一...

AOP切面實現方法日誌列印耗時計算

很簡單,通過aop實現每個方法訪問時候統一進行日誌列印和耗時計算,在spring配置xml檔案中設定啟用aop aspect component public class loggingaspect args resultdata joinpoint.proceed args long endtim...