微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用注释进行跟踪记录

我一直在使用一个公司的代码库,该代码库具有编写大量跟踪记录的策略.所以每个方法都有一段代码开始如下:
String LOG_METHOD = "nameOfMethod(String,List<Long>):void";
if(logger.isTraceEnabled()) { 
    Object[] params = new Object[] { string,list };
    logger.trace(CompanyMessages.newMethodInstanceMessage(this,LOG_METHOD,params)); 
}

并以此结束(在finally子句中或仅在方法的结尾处​​:

if(logger.isTraceEnabled()) { 
    logger.trace(CompanyMessages.leaveMethodInstanceMessage(this,LOG_METHOD)); 
}

实际上有更多的代码,但这是基本的想法.
这是混乱的代码,其他编码器不断混乱与自己的解释,不使用特定的CompanyMessages类,这是需要格式化的信息要被监视工具读取.所以我正在寻找一种摆脱上述所有代码方法,只需提供所有需要跟踪记录的方法,例如:@LogBefore(‘logLevel’)& @LogAfter( ‘记录等级’).

我选择这个解决方案的原因是让其他开发人员不必学习任何新东西,而是使用注释而不是代码.我在一个服务器环境中工作,我们部署了数百个Web应用程序和数十个开发人员.所以我一直在寻找一种在Web应用程序中实现这一点的方法,而不需要大量额外的编码或者额外的大型库.这意味着我正在寻找一个小型,稳定的AOP实现,使用类似于我所提出的注释,易于在每个Web应用程序中进行配置.表现也很重要.用AOP实现这个最简单的例子是什么?

编辑:我找到了我正在寻找的something very similar,但这有一些问题.必须配置需要日志记录的所有类,这将比仅使用注释更为资源密集.弹簧配置是否可以使用< aop:aspectj-autoproxy />修复了

解决方法

看起来像面向对象编程(AOP)可以真正帮助您.很好的解决诸如记录和跟踪等交叉问题,它支持像您所需要的注释.

看看AspectJ或Spring AOP.

它将涉及到一些AOP原则和您选择的API的学习,但它绝对值得的努力.特别是记录和跟踪是您将遇到的第一个AOP教程,它很容易做,而不必进一步深入.

原文地址:https://www.jb51.cc/java/126646.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐