gpt4 book ai didi

java - 登录原本不存在的 Java 应用程序

转载 作者:行者123 更新时间:2023-12-01 12:25:56 25 4
gpt4 key购买 nike

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

关键点是它相当大(就像我上面所说的那样),并思考快速、完整地完成它的策略是什么(为了论证,100% 覆盖率)(假设日志记录不是面向客户的核心业务)功能,所以假设没有为此付费)

因此这两种策略是 -

  • 使用 log4j2 添加调试语句、添加附加程序、文件滚动规则、添加动态开/关和日志级别更改等,从而按照理想的方式进行操作。
  • 使用 AOP 以声明式/编程方式定义端点和建议。设计如此复杂的规则,添加其余部分(附加程序、滚动规则等),因此不会触及每个文件并为此添加修订。

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

我能想到的缺点 -

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

你们能给我一些建议吗

最佳答案

虽然我是重构和干净代码的大力支持者,但我建议您使用 AspectJ 添加日志记录并看看您能走多远。也许您会对通过一个小方面获得的日志量感到惊讶。

恕我直言,日志记录是一个跨领域的问题,而不是核心功能。我会尽量避免登录我的核心代码。我对 AspectJ 的体验是积极的,我强烈推荐它。不过,您应该花一些时间来熟悉它的威力。

如果您需要诸如调用跟踪(可能整齐缩进)之类的东西,或者只是带有参数和返回值的简单方法调用日志记录,您将使用 AspectJ 快速获得结果,而不会弄乱您的应用程序代码。方面总是可以在一个地方进行改进和维护,非常干净。无需担心意大利面条式的切面代码。如果您不完全滥用 AspectJ,则不会发生这种情况。

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

关于java - 登录原本不存在的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26334961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com