log4j的优点

2022-09-04 00:40:22

过度设置和输出到日志文件的优势是什么?log4jSystem.outSystem.err


答案 1

在较高层面上,Log4j对手动日志记录的胜利在于,您可以将日志记录代码与实际要记录的内容以及要记录的位置和方式分离。有关日志记录详细程度/筛选、格式设置、日志位置甚至日志类型(文件、网络等)的详细信息都使用配置以声明方式处理,并通过自定义附加器进行扩展,而不必自己编写这种灵活性。

这一点至关重要,因为开发人员通常很难预测一旦他们的软件投入生产,日志记录需求将如何变化。管理该软件的运营团队可能需要不太详细的日志,可能需要多个日志,可能需要将这些日志发送到多个服务器,有时可能需要获取非常详细的数据以进行故障排除,等等。如果运营团队需要更改日志记录的工作方式,通常无法说服开发人员进行重大代码更改。这通常会导致生产停机、运营和开发之间的摩擦以及浪费时间。

从开发人员的角度来看,Log4j使您不必进行代码更改来支持日志记录,并使您免受想要日志记录更改的人的困扰。它使管理代码的人能够挠自己的痒处,而不是骚扰你!

此外,由于Log4j是Java日志记录的事实标准,因此有很多工具可以使用Log4j做很酷的事情 - 此外,还可以防止您和您的运营团队重新发明轮子。

我最喜欢的功能是能够轻松编写追加器,将数据发送到非文件源,如SYSLOGSplunk等,这使得您的应用程序可以轻松自定义登录到您的IT部门已经在使用的操作管理工具中。


答案 2

实际上,您应该研究一下 slf4j 的外观,因为它允许您使用 {}-占位符来表示最简洁的语句。然后,您可以使用 slf4j 后面的相应日志记录框架来处理日志语句的实际处理。这可以是log4j或slf4j-simple,它只是打印出所有INFO,WARN和ERROR,并丢弃其余部分。

您需要做出的关键观察是,日志语句的编写是在编写代码时完成的,而所需内容的决定是在部署代码时完成的,这可能是在编写和测试代码后的几年。System.out.println 要求您对代码进行物理更改以摆脱它们,这在严格的写入-测试-部署周期中是不可接受的。如果代码发生更改,则必须重新测试。使用slf4j,您只需启用要查看的内容即可。

我们在测试阶段有完整的日志记录,在生产部署的初始阶段有相当详细的日志记录,之后我们只介绍信息。这在很少可能调试案例的情况下为我们提供了完整的信息。

你可能会发现我写的这篇文章很有趣。目标受众是Java程序员入门,我打算从一开始就给他们好习惯。http://runjva.appspot.com/logging101/index.html


推荐