接口日志
This commit is contained in:
@@ -0,0 +1,75 @@
|
|||||||
|
package com.czg.config;
|
||||||
|
|
||||||
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.czg.utils.ServletUtil;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
|
import org.springframework.context.annotation.Profile;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 方法调用统一切面处理
|
||||||
|
*/
|
||||||
|
@Aspect
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
//@Profile({"dev"})
|
||||||
|
public class ControllerAspect {
|
||||||
|
|
||||||
|
@Pointcut("execution(public * (com.czg.controller.*.controller..*).*(..)))")
|
||||||
|
public void pkg() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Around("pkg()")
|
||||||
|
public Object around(ProceedingJoinPoint pjp) throws Throwable {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
//避免回填
|
||||||
|
Object[] args = pjp.getArgs();
|
||||||
|
|
||||||
|
// 如果请求参数中包含HttpServletRequest,剔除HttpServletRequest
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
if (args[i] instanceof HttpServletRequest) {
|
||||||
|
args[i] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String params = new Gson().toJson(args);
|
||||||
|
|
||||||
|
// 执行被拦截的方法
|
||||||
|
Object result = pjp.proceed();
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
HttpServletRequest request = ServletUtil.getRequest();
|
||||||
|
String method = request.getMethod();
|
||||||
|
String requestUrl = request.getRequestURL().toString();
|
||||||
|
String requestIp = ServletUtil.getClientIPByHeader(request);
|
||||||
|
long useTime = end - start;
|
||||||
|
ThreadUtil.execAsync(() -> {
|
||||||
|
//请求的参数
|
||||||
|
String resultJson = JSONObject.toJSONString(result);
|
||||||
|
try {
|
||||||
|
if (StrUtil.isNotBlank(resultJson) && !"null" .equals(resultJson)) {
|
||||||
|
log.info("\n>>>>>> {} {}" +
|
||||||
|
"\n>>>>>> IP: {} " +
|
||||||
|
"\n>>>>>> execute time:{}ms " +
|
||||||
|
"\n>>>>>> Request: {}" +
|
||||||
|
"\n>>>>>> Response: {}",
|
||||||
|
method, requestUrl, requestIp, useTime,
|
||||||
|
params,
|
||||||
|
resultJson
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Request 为空" + e.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user