java靈活的接口日誌打印

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)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章