You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.1 KiB
85 lines
3.1 KiB
package {{ package.Common }}.config;
|
|
|
|
//--- 固定引入 ---//
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
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.reflect.MethodSignature;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
//--- 固定引入 ---//
|
|
|
|
|
|
/***
|
|
* @Description: 日志切面
|
|
* @Author: {{author}}
|
|
* @Date: {{date}}
|
|
* @Wechat: {{ wechat }}
|
|
*/
|
|
@Slf4j
|
|
@Aspect
|
|
@Component
|
|
public class WebLogAspect {
|
|
|
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
/** 拦截所有 Controller 方法 */
|
|
@Around("within(@org.springframework.web.bind.annotation.RestController *)")
|
|
public Object logWebRequest(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
long start = System.currentTimeMillis();
|
|
|
|
ServletRequestAttributes attributes =
|
|
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
HttpServletRequest request = attributes != null ? attributes.getRequest() : null;
|
|
|
|
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
|
String methodName = signature.toShortString();
|
|
|
|
// ========== 读取请求入参 ==========
|
|
String paramsJson = "";
|
|
try {
|
|
paramsJson = objectMapper.writeValueAsString(joinPoint.getArgs());
|
|
} catch (Exception ignored) {}
|
|
|
|
// ----------- 打印入参 -------
|
|
if (request != null) {
|
|
log.info("\n================= 请求开始 =================\n" +
|
|
"URL : {}\n" +
|
|
"Method : {}\n" +
|
|
"Controller : {}\n" +
|
|
"IP : {}\n" +
|
|
"Request : {}\n" +
|
|
"============================================",
|
|
request.getRequestURI(),
|
|
request.getMethod(),
|
|
methodName,
|
|
request.getRemoteAddr(),
|
|
paramsJson);
|
|
}
|
|
|
|
// ========== 执行方法 ==========
|
|
Object result = joinPoint.proceed();
|
|
|
|
// ========== 打印返回结果 ==========
|
|
String resultJson = "";
|
|
try {
|
|
resultJson = objectMapper.writeValueAsString(result);
|
|
} catch (Exception ignored) {}
|
|
|
|
log.info("\n================= 请求结束 =================\n" +
|
|
"URL : {}\n" +
|
|
"耗时 : {} ms\n" +
|
|
"返回值 : {}\n" +
|
|
"============================================",
|
|
request != null ? request.getRequestURI() : methodName,
|
|
(System.currentTimeMillis() - start),
|
|
resultJson);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|