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