java靈活的接口日誌打印
日常開發接口時候經常需要和別的開發人員對接, 加上一些必要的日誌就顯得非常重要了, 方便定位到底是接口返回的數據有問題還是別的地方有問題
本文介紹通過aop自定義一個接口日誌增強的邏輯, 在需要的地方加上註解即可, 方便快捷
註解類
首先我們需要自定義一個註解類, 類名自己定(本文用的ResponseLog
)
需要打日誌的方法前加上@ResponseLog
即可
/**
* 接口回覆日誌註解
* @author wangq 2020/3/7 18:43
* @param
* @return
*/
@Target(value = { ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface ResponseLog {
boolean value() default true;// 默認打日誌
}
關鍵點介紹
@Target
: 定義該註解生效的地方@Retention
: 保留到哪個階段
實現方法
寫一個方法, 並註明在掃描到註解的哪個階段執行
大概有如下註解
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5ekuiNHC-1583579028915)(https://raw.githubusercontent.com/TWanGT/pic/master/20200307185004.png)]
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
/**
* @Author: WanG
* @Date: 2020/3/5 20:04
* @version: v1.0
* @description: 請求日誌
*/
@Slf4j
@Aspect
@Component
public class ResponseLogAspect {
@Around(value = "@annotation(ResponseLog)")
public Object doAfter(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
Object result = proceedingJoinPoint.proceed();
log.info("接口回覆內容: {}", JSON.toJSONString(result));
return result;
}
}
使用
在需要打日誌的接口方法前面加上註解即可
@ResponseLog
@RequestMapping("test")
public String test() {
return "hellow";
}
效果演示
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hXQXreVC-1583579028918)(https://raw.githubusercontent.com/TWanGT/pic/master/20200307190143.png)]