Spring Boot 接口请求日志(基于AOP和自定义注解)
以下是一个简化的Spring Boot接口请求日志记录的示例代码,基于AOP和自定义注解:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingAspect.class);
@Pointcut("@annotation(com.example.demo.LoggableRequest)")
public void loggableRequestPointcut() {
}
@Before("loggableRequestPointcut()")
public void logRequest(JoinPoint joinPoint) {
LOGGER.info("Method: {}", joinPoint.getSignature().toShortString());
LOGGER.info("Arguments: {}", joinPoint.getArgs());
}
@AfterReturning(pointcut = "loggableRequestPointcut()", returning = "result")
public void logResponse(Object result) {
LOGGER.info("Response: {}", result);
}
}
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LoggableRequest {
}
在这个示例中,我们定义了一个名为LoggableRequest
的自定义注解,用于标记需要记录请求和响应日志的方法。然后,我们创建了一个名为LoggingAspect
的切面类,使用@Pointcut
定义了一个切点,匹配所有带有LoggableRequest
注解的方法。使用@Before
建立了一个建议,在方法执行前记录请求信息,使用@AfterReturning
建议记录方法返回的结果。
这个示例展示了如何利用AOP和自定义注解来实现接口请求日志记录,这是一个很常见的需求,对开发者有很好的教育意义。
评论已关闭