145

将 log4j 库添加到 Java 5 项目中是否仍然值得只是为了记录让我们说一些具有一些不错的翻转设置的文件的异常。还是标准的 util.logging 工具也能完成这项工作?

你怎么看?

4

7 回答 7

123

我会说你可能对你描述的需求对 util.logging 没问题。

对于一个好的决策树,看看Log4j 与 java.util.logging

问题一:您是否预计需要 Log4j 具有而 JUL 没有的任何智能处理程序,例如 SMTPHandler、NTEventLogHandler 或任何非常方便的 FileHandlers?

问题二:您是否希望经常切换日志输出的格式?您是否需要一种简单、灵活的方式来做到这一点?换句话说,你需要Log4j的PatternLayout吗?

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

如果您可以对上述任何问题的回答是肯定的,请使用 Log4j。如果您对所有这些都做出明确的否定回答,那么 JUL 将绰绰有余,并且它已经方便地包含在 SDK 中。

也就是说,现在几乎每个项目似乎都结束了,包括 log4j,只是因为其他一些库使用它。

于 2008-08-28T08:37:16.053 回答
45

我建议您使用Java 的简单日志记录外观(SLF4J)。它支持包括 Log4J 在内的不同提供程序,并且可以用作 Apache Commons Logging 的替代品。

于 2008-08-28T10:58:36.993 回答
22

Log4j 已经存在了很长时间,并且运行良好。我没有科学研究来支持它,但根据我在大量客户中看到的情况,我认为它很容易成为我看到使用最多的日志记录框架。它已经存在了很长时间,并没有被 Next Big Logging Framework 取代,这说明了一些事情。

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

  1. 控制台Appender
  2. DailyRollingFileAppender
  3. ExternallyRolledFileAppender
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. 滚动文件附加器
  9. SMTPAppender
  10. SocketAppender
  11. SyslogAppender
  12. TelnetAppender
  13. WriterAppender

加上其他。编写自己的 appender 也不难。此外,每个附加程序都具有很大的灵活性,可让您专门控制日志中的输出内容。

需要注意的是,除了 log4j 之外,当我使用 apache commons logging 时,我遇到了一系列类加载器问题。它仅适用于一个特定的应用程序,但我发现单独使用 log4j 更简单,而不是使用像公共日志这样的抽象层时提供的灵活性。

有关更多详细信息,请参阅本文 :

祝你好运!

于 2008-08-30T23:34:39.797 回答
17

java.util.logging 提供了一个全面的日志记录包,没有其他一些提供的额外包袱。

于 2008-12-16T10:55:40.190 回答
7

log4j 是一个整体上更好的包,并且没有 java.util.logging 包含的一些小问题。我认为直接使用 log4j 比使用公共日志记录更容易。

于 2008-09-09T03:57:08.340 回答
4

我推荐使用Apache Commmons Logging作为你的日志接口。这样,您就可以随时灵活地切换日志记录实现,而无需更改任何代码。

于 2008-08-28T09:40:33.747 回答
3

我会选择 log4j。log4j 的可能性根本没有过时!

于 2008-08-28T08:43:45.163 回答