传统日志记录与AOP日志记录

non*_*tor 17 logging aop

我正在开始这个新项目,我们正在逐步淘汰我们的日志/调试方法,我想在SO上给你们其他人提出问题,给出

private final static Logger logger = LoggerFactory.getLogger(getClass());
...
public void doSumething(){
...
if(logger.isDebugEnabled())
    logger.debug("...");
}
Run Code Online (Sandbox Code Playgroud)

要么

 @After("execution(* *.doSomething())")
    public void logAfter(JoinPoint jp){
        logger.debug("...");
    }
Run Code Online (Sandbox Code Playgroud)

AOP方法真的比使用传统方法更好吗?或者AOP在特定用例中是否优于日志记录/分析?

dax*_*ito 28

对于性能而言,AOP方法肯定比传统方法有一点开销.

AOP的众多优势之一是它允许您将非业务问题与业务逻辑分开.它还可以帮助您完成平凡的任务,例如在每个方法中放置一个日志记录逻辑,或者在每个方法上放置一个try-catch语句.

我认为真正的问题是,如果性能开销(根据我的经验只是最小的)将弥补您在开发过程中必须经历的平凡任务.

一位朋友之前告诉我,最好是拥有一个可维护且可扩展的应用程序,而不是使用速度更快的应用程序来维护你.缓慢可以通过多种方式得到补偿,例如升级硬件等.

这只是我的两分钱,希望这会有所帮助.

  • 我同意维护和可扩展性,因此我使用aop风格 (4认同)

sty*_*tyx 10

我不认为这些应被视为相互排斥的替代品.

我认为AOP非常适合跟踪(即记录方法入口/出口和参数值).

我仍然使用常规日志记录:

  1. 对于信息/警告/错误消息
  2. 对于开发期间的调试消息,以查看某些变量的值或查看使用的if/then路径等.