我正在尝试追踪我的一个Java项目中的问题,而且我目前面临着必须手动将 lot 的日志记录语句添加到一大堆方法中的可能性。你可能已经明白了,我不是很喜欢这个想法:
这些方法中的大多数都是性能关键的,我不想在不需要时添加日志记录,即使它像log4j一样轻量级。
在某些情况下,我想从Java库中记录类的操作。虽然OpenJDK源代码可用,但我不将为此提供我自己的Java库版本。
我对在特定条件下记录特定代码路径感兴趣。虽然我可以集中进行日志记录适用性检查,但如果我需要修改条件,我仍然可以预见将来会发生无法预料的重构。
添加日志记录语句 en-mass 需要批次的工作和时间,我宁愿更高效地使用它。
考虑到存在字节码操作库,例如Javassist和BCEL,我希望可能有一个日志框架可以将繁重的工作从我手中夺走。
由于我主要对记录方法调用参数和在特定条件下返回值感兴趣,是否有一个基于检测的Java日志框架可以让我这样做?最好是比Java agents更现代,更不尴尬的东西?
答案 0 :(得分:2)
日志记录是面向方面编程的“hello world”。
如果您已经是Spring用户,那么您将能够编写一个方面类来记录您想要的内容,然后以声明方式将其编织到所有需要它的对象中。
Spring有自己的AOP实现;它还支持AspectJ。
如果您愿意,可以在没有Spring的情况下使用AspectJ。
答案 1 :(得分:0)
试试这个开源工具:http://code.google.com/p/perfspy/。它是运行时日志记录,性能监视和代码检查工具。它使用ApsectJ在运行时编织应用程序代码,并记录每个方法的执行时间及其输入参数和值。它有一个UI应用程序,您可以在其中查看方法调用及其输入和返回值作为树。有了它,您可以发现性能瓶颈并理解复杂的代码流。