Files
timeline-server/timeline-component-common/src/main/java/com/timeline/aop/RequestLogAspect.java
jiangh277 f8fb9b561c init
2025-07-22 23:00:39 +08:00

49 lines
1.8 KiB
Java

package com.timeline.aop;
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.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Slf4j
@Aspect
@Component
public class RequestLogAspect {
@Pointcut("execution(* com..controller.*.*(..))")
public void log() {
}
@Around("log()")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
try {
// 获取请求信息
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
log.info("【请求开始】");
log.info("接受请求, URL : {}", request.getRequestURL());
log.info("HTTP Method : {}", request.getMethod());
log.info("IP Address : {}", request.getRemoteAddr());
log.info("Class Method: {}.{}", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName());
// 执行原方法
Object result = joinPoint.proceed();
// 输出返回值
log.info("响应结果 : {}", result);
log.info("结束请求, 请求耗时 : {} ms", System.currentTimeMillis() - startTime);
return result;
} catch (Exception e) {
log.error("请求发生异常", e);
throw e;
}
}
}