Java利用Aop切面记录操作日志(注解方式)
    		       		warning:
    		            这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
    		        
        		                
                以下是一个使用Spring AOP和注解来记录操作日志的简单例子。
首先,创建一个自定义注解@Loggable:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Loggable {
    String value() default "";
}然后创建一个切面类LogAspect:
@Aspect
@Component
public class LogAspect {
 
    private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
 
    @Autowired
    private HttpServletRequest request;
 
    @AfterReturning("@annotation(loggable)")
    public void logAfter(JoinPoint joinPoint, Loggable loggable) {
        // 获取操作描述
        String operationDesc = loggable.value();
        if (operationDesc.isEmpty()) {
            operationDesc = joinPoint.getSignature().toShortString();
        }
 
        // 获取操作结果
        Object result = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName();
 
        // 记录日志
        logger.info("Operation: {}, Result: {}, Request URL: {}, Parameters: {}",
                operationDesc, result, request.getRequestURL(), joinPoint.getArgs());
    }
}在需要记录日志的方法上使用@Loggable注解:
@RestController
public class MyController {
 
    @Loggable("Perform some operation")
    @GetMapping("/do-something")
    public String doSomething() {
        // 业务逻辑
        return "Operation completed";
    }
}确保Spring AOP的相关配置已经在你的Spring配置中启用,例如通过@EnableAspectJAutoProxy注解。
这个例子展示了如何简单地使用AOP和注解来记录操作日志。在实际应用中,你可能需要根据具体需求对日志记录进行更详细的设计,比如记录操作的用户信息、异常处理等。
评论已关闭