我一直在使用一个公司的代码库,该代码库具有编写大量跟踪记录的策略.所以每个方法都有一段代码开始如下:
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 />修复了