Java利用Aop切面记录操作日志(注解方式)
以下是一个使用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和注解来记录操作日志。在实际应用中,你可能需要根据具体需求对日志记录进行更详细的设计,比如记录操作的用户信息、异常处理等。
评论已关闭