LoggingInterceptor 或 AOP 日志记录

LoggingInterceptor or AOP logging

我打算处理登录 spring。

很少有人建议通过 LoggingInterceptor 来处理,有人建议使用 AOP 横切关注点

企业应用程序推荐或遵循哪一个最佳实践?

谢谢。

这两种方法各有优缺点。通过 LoggingInterceptor 进行日志记录是更好的方法,因为它是 Java 提供的用于处理日志记录的标准库,您也可以进行自定义日志记录。

A​​OP 是更好的方法,当你想在更细粒度的级别上实现日志记录时,如在函数的某些 return 值或 classes 上。例如,如果您只想在 returning 值为 null 时记录请求。你可以使用 AOP 作为 :

@AfterReturning(pointcut = "execution(* com.foo.bar..*.*(..))", returning = 
 "retVal")
 public void logAfterMethod(JoinPoint joinPoint, Object retVal) {
  ...
 }

您也可以使用日志记录拦截器记录 returning 值,但您需要为此编写另一个函数。 i-e

public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object 
 arg3) throws Throwable { 
 log = LogFactory.getLog(arg3.getClass());
 log.info("LOGGING IS: "+arg1.getName()); 
}

从生产的角度来看,AOP 具有性能开销,因为您正在为所有服务调用的执行增加开销。而 Logging Intercept 只是一个具有正常执行周期的 class。