springboot利用@Aspect實現(xiàn)日志工具類的詳細代碼
更新時間:2022年03月21日 14:47:21 作者:java-zh
這篇文章主要介紹了springboot利用@Aspect實現(xiàn)日志工具類,通過實例代碼介紹了導包及在啟動類上進行注解自動掃描的方法,需要的朋友可以參考下
一、導包
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.12</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>二、在啟動類上進行注解自動掃描
@SpringBootApplication
@EnableCaching
@EnableAsync
@ComponentScan({"com.workorder.*"})
public class WorkOrderApplication {
public static void main(String[] args) {
SpringApplication.run(WorkOrderApplication.class, args);
}
}三、工具類
@Aspect
@Component
@Slf4j
public class LogAspect {
@Autowired
private Environment env;
@Pointcut("execution(public * com.workorder..controller..*.*(..))")
public void logPointCut()
{}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
log.info("=========================================");
long beginTime = System.currentTimeMillis();
//執(zhí)行方法
Object result = point.proceed();
//執(zhí)行時長(毫秒)
long time = System.currentTimeMillis() - beginTime;
//保存日志
saveSysLog(point, time);
return result;
}
private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {
// 接收到請求,記錄請求內容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String logStr="";
if (isEnvironment("dev")){
String requestUrl = request.getRequestURL().toString() + "?";
//獲取所有參數(shù)方法
Enumeration<String> enu=request.getParameterNames();
while(enu.hasMoreElements()){
String paraName = enu.nextElement();
requestUrl+=paraName + "=" + request.getParameter(paraName) + "&";
}
logStr+="\r\n請求地址:"+ requestUrl.substring(0,requestUrl.length()-1);
}
//請求的參數(shù)
Object[] args = joinPoint.getArgs();
String params = JSONUtil.toJsonStr(args);
logStr+="\r\n請求方式:"+ request.getMethod();
logStr+="\r\n請求方法Token:"+ request.getHeader("token");
logStr+="\r\n請求參數(shù):"+ params;
logStr+="\r\nIP:"+ request.getRemoteAddr();
logStr+="\r\n響應時間:"+ time+" ms";
log.info(logStr);
/**
* 判斷當前是什么環(huán)境
* @param str
* @return
*/
private boolean isEnvironment(String str) {
boolean flag = false;
String[] arr = env.getActiveProfiles();
List<String> list = Arrays.asList(arr);
if (list.contains(str)) {
flag = true;
}
return flag;
}
}四、結果

到此這篇關于springboot利用@Aspect實現(xiàn)日志工具類的詳細代碼的文章就介紹到這了,更多相關springboot日志工具類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud如何使用Eureka實現(xiàn)服務之間的傳遞數(shù)據(jù)
這篇文章主要介紹了SpringCloud使用Eureka實現(xiàn)服務之間的傳遞數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring boot 跳轉到jsp頁面的實現(xiàn)方法
本篇文章主要介紹了Spring boot 跳轉到jsp頁面的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
Spring?Boot?集成Redisson實現(xiàn)分布式鎖詳細案例
這篇文章主要介紹了Spring?Boot?集成Redisson實現(xiàn)分布式鎖詳細案例,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08
spring框架下@value注解屬性static無法獲取值問題
這篇文章主要介紹了spring框架下@value注解屬性static無法獲取值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
java解析dbf之通過javadbf包生成和讀取dbf文件
這篇文章主要介紹了java通過javadbf讀取和生成DBF文件的方法,大家參考使用吧2014-01-01

