登录最初不存在的Java应用程序

时间:2014-10-13 07:35:43

标签: java swing aop log4j2

我有一个相当大的传统(swing)应用程序,目前正在集思广益并评估添加日志记录的策略。

关键点在于它相当大(就像我上面所说的那样),并且思考可以快速彻底地完成这项工作的策略(为了论证而100%覆盖)(让我们这样做)说日志记录不是面向核心业务功能的客户,所以让我们说它没有得到报酬)

所以这两个策略是 -

  • 使用log4j2添加调试语句,添加appender,文件滚动规则,添加动态开/关和更改日志级别等,从而以理想的方式完成。
  • 使用AOP以声明/程序方式定义端点和建议。设备如此精细的规则,添加到部分的其余部分(appenders,滚动规则等),因此不会触及每个文件并为此添加修订。

如果有人有经验,第二个策略是我想探索的,如果有人走了那条路。

我能想到的缺点 -

  • 应用程序中没有标准/约定,99%无法完全定义端点
  • 上面AOP模块中的Sphagetti和不可维护的代码,很大程度上是上述问题的结果
  • 添加相同的匹配集以记录到将来的类。

你们可以向我推荐吗?

1 个答案:

答案 0 :(得分:1)

虽然我是重构和清理代码的主要支持者,但我建议您使用AspectJ添加日志记录并查看您获得的内容。可能你会惊讶于你通过一点方面获得多少日志记录。

IMHO日志记录是一个贯穿各领域的关注点,而不是核心功能。我会尽量避免登录我的核心代码。我对AspectJ的看法只是积极的,我热烈推荐它。不过,你应该花点时间熟悉它的力量。

如果您需要类似于调用跟踪(可能整齐地缩进)或仅使用参数和可能返回值的普通方法调用日志记录,您将获得使用AspectJ的快速结果,而不会使应用程序代码混乱。这个方面总是可以改进和维护在一个非常干净的地方。无需担心意大利面条代码。如果你不完全滥用AspectJ,就不会发生这种情况。

如果您的核心代码已经是意大利面条代码并且您有很长的方法需要在那些方法中使用 那些方法,而不是在它们周围,那么您将遇到问题。然后你可能需要重构并将怪物方法分解成更小的方法。但无论您选择哪种日志记录方法,这都是一个问题。我自己对丑陋遗留代码和基于AspectJ的日志记录的经验告诉我,它有很大帮助,因为即使意大利面条代码调用其他方法,也可以在AspectJ中很好地跟踪。