Java 日志与 Log4J

将 log4j 库添加到 Java5项目中只是为了记录 假设一个文件有一些异常,并且有一些很好的翻转设置。 或者标准 util.log 工具也可以完成这项工作?

你觉得怎么样?

81750 次浏览

我会说,您可能不介意使用 util.log 来满足您所描述的需求。

对于一个好的决策树,看看 Log4j vs java.util.log

第一个问题: 您是否预期需要 Log4j 拥有但 JUL 没有的任何智能处理程序,例如 SMTPHandler、 NTEventLogHandler 或任何非常方便的 FileHandler?

问题二: 您是否想要频繁地切换日志输出的格式?你是否需要一个简单、灵活的方法来做到这一点?换句话说,您需要 Log4j 的 PatternLayout 吗?

问题三: 在应用程序在生产环境中进行编译和部署之后,您是否预计一定会需要改变应用程序中的复杂日志配置?你的配置是不是听起来像这样: “来自这个类的严重消息通过电子邮件发送给支持人员; 来自一个类子集的严重消息被记录到我们服务器上的 syslog 守护进程; 来自另一个类子集的警告消息被记录到网络驱动器 A 上的一个文件; 然后所有来自任何地方的消息都被记录到网络驱动器 B 上的一个文件”?你觉得自己每隔几天就会调整一下吗?

如果以上任何一个问题的答案是肯定的,请使用 Log4j。如果您对所有这些问题都给出了明确的否定回答,那么 JUL 就足够了,而且它很方便地已经包含在 SDK 中。

也就是说,现在几乎每个项目都包括 log4j,即使只是因为其他库使用它。

我会使用 log4j。使用 log4j 的可能性一点也不过时!

我建议使用 Apache 公共日志记录作为日志记录接口。这样,您就可以随时切换日志记录实现,而不需要在您这一端进行任何代码更改。

我建议您使用 SLF4J(SLF4J)。它支持不同的提供程序,包括 Log4J,可以用来替代 ApacheCommons 日志记录。

Log4j 已经存在很长时间了,它工作得非常好。我没有任何科学研究来支持它,但是基于我在大量客户中看到的情况,我认为使用最多的是日志框架。它已经存在了很长一段时间,并没有被下一个大日志框架所取代,这说明了一些问题。

这是非常简单的设置,并很容易学习基本的附加(输出)。有一个完整的主机附加程序是可用的,包括:

  1. Console Appender
  2. DailyRollingFileAppender
  3. 外部滚动的文件追加器
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. RollingFileAppender
  9. SMTPAppender
  10. SocketAppender
  11. 西格拉德 · 阿彭德
  12. TelnetAppender
  13. WriterAppender 作者 Appender

还有其他人。编写自己的 appender 也不难。此外,每个附加程序都有很大的灵活性,允许您具体控制日志中的输出内容。

注意,除了 log4j 之外,在使用 apachecommons 日志记录时,我还遇到了一系列类加载器问题。虽然它只适用于一个特定的应用程序,但是我发现单独使用 log4j 比使用 commons log 这样的抽象层更加简单。

请参阅这篇文章 更多详情 :

祝你好运!

Log4j 总的来说是一个更好的包,并且没有 java.util.log 包含的一些小问题。我赞成直接使用 log4j 比使用 commons 日志记录更容易。

Log 提供了一个全面的日志包,没有其他一些程序提供的额外负担。