代码之家  ›  专栏  ›  技术社区  ›  non sequitor

传统日志与AOP日志

  •  16
  • non sequitor  · 技术社区  · 15 年前

    我正在启动这个新项目,我们正在研究我们的日志记录/调试方法,我想向你们提出这个问题,所以

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

     @After("execution(* *.doSomething())")
        public void logAfter(JoinPoint jp){
            logger.debug("...");
        }
    

    AOP方法真的比使用传统方法好吗?或者AOP是否在特定的日志/分析用例中表现出色?

    4 回复  |  直到 15 年前
        1
  •  29
  •   daxsorbito    11 年前

    就性能而言,AOP方法肯定比传统方法有一点开销。

    AOP的许多优点之一是它允许您将非业务关注点与业务逻辑分离。它还可以帮助您完成日常任务,例如在每个方法中放置日志逻辑或在每个方法上放置try-catch语句。

    我认为真正的问题是,如果性能开销(在我的经验中,这只是最小的)能够补偿开发过程中必须完成的平凡任务。

    这只是我的两分钱,希望能有所帮助。

        2
  •  10
  •   styx    13 年前

    我不认为这些应该被视为相互排斥的选择。

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

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

    1. 有关信息/警告/错误消息
    2. 用于在开发过程中调试消息,以查看特定变量的值或查看使用了哪个if/then路径等。
        3
  •  1
  •   Kimble    15 年前

    即使您决定不使用AOP,也有比这更好的日志记录方法:

    if(logger.isDebugEnabled())

    看看log4j,它将使您能够更改日志级别、不同的appender和许多其他内容。

        4
  •  1
  •   software.wikipedia    11 年前

    我同意@daxsorbito-answer,并希望在此基础上再接再厉。

    • 可以使用配置文件配置横切建议,这样就可以为生产日志记录提供不同的aop建议。这可能会提高性能。

    • AOP可以减少大量的代码混乱,并鼓励开发人员专注于主要任务。

    • 日志文件具有一致的消息。(不再是“你说土豆,我说巴塔塔…:”)——每个开发人员可以用不同的方式记录它。然而,如果我们AOP fy它,您可以使它在整个应用程序中保持一致,并且可以轻松地将许多优秀的分析放在上面。

    • 这也鼓励您编写易于调试的小型可重用方法(如果这些方法有时是可测试的,则更好)。