在專案中會出現各種異常,有伺服器異常,資料庫異常,使用者操作異常等各種
問題,在專案運維的時候通常需要根據日誌來查問題。有些問題是週期性的,比
如oom等。使用切面來記錄日誌不會對**有侵入性,可以統一管理,方便維護。
org.springframework.boot
spring-boot-starter-aop
cn.hutool
hutool-all
4.5.6
@data
public class syslog
@slf4j
@component
@aspect
public class syslogaspect
/*** 前置攔截
* @param joinpoint
*/@before(value = "syslogaspect()")
public void recordlog(joinpoint joinpoint) throws exception
/*** 返回通知
* @param ret
*/@afterreturning(returning = "ret", pointcut = "syslogaspect()")
public void doafterreturning(object ret) else
//發布事件
//移除當前log實體
syslogthreadlocal.remove();
}/**
* 異常通知
* @param e
*/@afterthrowing(pointcut = "syslogaspect()",throwing = "e")
public void doafterthrowable(throwable e)
}
public syslogevent(object source)
}@slf4j
@component
public class sysloglistener
}
@slf4j
@restcontroller
public class testcontroller
}
設計日誌物件
定義註解物件
定義切面攔截註解所使用的地方,使用前置攔截攔截到對應方法,在方法中使用
threadlocal物件新增日誌物件,並設定日誌物件屬性,使用後置通知與異常通
知來設定日誌物件的異常資訊等屬性,並做非同步操作
定義監聽事件,日誌物件非同步發布後開始執行
使用切面攔截的時候有關threadlocal和spring的事件發布可以去查閱相關資料
springmvc 切面記錄操作日誌
自定義註解 是否添操作日誌註解 target retention retentionpolicy.runtime documented public inte ce methodlog 操作日誌記錄表 public class operationlog 切面操作 系統日誌,記錄 執行相關資訊 aut...
SpringAop切面實現日誌記錄
springaop切面實現日誌記錄 實現 原因 spring在處理中,可能是因為我的專案有事務,serviceimpl的方法被 後直接得不到了。換乙個思路 先得到自己的父類,然後通過父類得到真實的自己 解決方法 1 2 這個方法幫忙拿出註解中的operation屬性 3 因為有攔截serviceim...
切面日誌列印
需求目的 對目前專案中的各種方法進行列印其日誌資訊,方便bug排查 方法採用切面方法進行列印 設定註解類 日誌註解 public inte ce operatelog設定切面類 aspect slf4j component public class operatelogaspect catch th...