基於AOP的環繞通知的日誌配置

2021-09-10 06:43:27 字數 1930 閱讀 8520

一. 什麼是日誌?

在伺服器應用中,日誌起著至關重要的作用,詳細的日誌記錄可以使我們在尋找問題的時候一下就定位到關鍵位置。日誌資訊的關鍵就是明確詳細的記錄問題的位置和出錯資訊。在乙個伺服器介面的入口和退出之前我們往往需要對日誌工具進行說明配置日誌的模組,分類,過濾資訊等等內容。而這些資料,卻是剛好可以使用切面來進行配置。

二. 日誌切面類(環繞通知)

@component

public

class

skynetlogaspect

】 method 【{}】 start."

, joinpoint.

gettarget()

.getclass()

.get******name()

, method)

; object val = null;

stopwatch stopwatch = stopwatch.

createstarted()

;try

catch

(exception e)

】 error"

, e, method);}

finally

】 method 【{}】 finished, {}ms, result:{}"

, joinpoint.

gettarget()

.getclass()

.get******name()

, method, elapsed, json.

tojsonstring

(val));

//退出方法前,清除日誌配置

logcontextutils.

removeall()

;}return val;

}/**

* 通過子類的類物件查詢父類或者介面

* @param object 子類的類物件

* @return 父類或者介面名

*/private string getparentname

(class<

?> object)

}return parent;

}}

三. 日誌切面的配置

<

aop:config

>

<

aop:pointcut

expression

="execution(public * com.lizi.service.*.impl.*.*(..))"

id="servicelog"

/>

<

aop:pointcut

expression

="execution(public * com.lizi.service.spider.spiderclient.dospider(..))"

id="integrationlog"

/>

<

aop:aspect

ref=

"skynetlogaspect"

>

<

aop:around

method

="skynetlog"

pointcut-ref

="servicelog"

/>

<

aop:around

method

="skynetlog"

pointcut-ref

="integrationlog"

/>

aop:aspect

>

aop:config

>

spring基於 XML 的 AOP 的環繞通知

問題 當我們配置了環繞通知之後,切入點方法沒有執行,而通知方法執行了。分析原因 通過對比動態 中的環繞通知 發現動態 的環繞通知有明確的切入點方法呼叫,而我們的 中沒有。解決 spring框架為我們提供了乙個介面 proceedingjoinpoint。該介面有乙個方法proceed 此方法就相當於...

Spring中AOP配置環繞通知

package cn.gpxxg.service.impl import cn.gpxxg.service.accountservice public class accountserviceimpl implements accountservice public void edit intege...

Spring框架AOP的環繞通知

環繞通知 問題 當配置了環繞通知之後,切入點方法沒有執行,而通知方法執行了。分析 通過對比動態 中的環繞通知 發現動態 的環繞通知有明確的切入點方法呼叫,而我們的 中沒有。解決 spring框架為我們提供了乙個介面 proceedjoinpoint。該介面有乙個方法proceed 此方法就相當於明確...