Java日志与Log4J

是否仍然值得将log4j库添加到一个Java 5项目只是为了logging让我们说一些例外,以一些不错的翻转设置的文件。 或者标准的util.logging工具也可以做这个工作吗?

你怎么看?

我会说,你可能是很好的util.logging为您描述的需要。

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

问题一:你是否期望对Log4j有JUL所没有的任何聪明的处理程序的需求,比如SMTPHandler,NTEventLogHandler或任何非常方便的FileHandler?

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

问题三:在编译和部署到生产环境之后,您是否预料到需要更改应用程序中的复杂日志loggingconfiguration? 你的configuration是否听起来像这样:“来自这个类的严重消息通过电子邮件发送给支持人员;来自类的子集的严重消息被logging到服务器上的syslog deamon;来自另一个类的子集的警告消息被logging到networking驱动器A上的文件;然后来自任何地方的所有消息都logging到networking驱动器B上的文件“? 你看到自己每隔几天就调整一次吗?

如果您可以回答以上任何问题,请使用Log4j。 如果你对所有人都回答肯定的话,那么JUL就足够了,它已经包含在SDK中了。

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

我build议您使用简单日志门面的Java (SLF4J)。 它支持不同的提供者,包括Log4J,可以用来替代Apache Commons Logging。

Log4j已经存在了很长时间,并且工作得很好。 我没有科学的研究来支持它,但是根据我在大量客户端看到的情况,很容易看到我使用的日志框架比其他任何东西都要多。 它已经存在了很长一段时间,并没有被下一个大型日志logging框架所取代,它说了一些东西。

这是设置简单,并易于学习基本的appender(输出)。 有一个可用的整个主机appenders,包括:

  1. 是ConsoleAppender
  2. DailyRollingFileAppender
  3. ExternallyRolledFileAppender
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. RollingFileAppender进行
  9. SMTPAppender
  10. SocketAppender
  11. SyslogAppender
  12. TelnetAppender
  13. WriterAppender

加上其他人。 写自己的appender也不难。 另外,每个appender都有很大的灵活性,可以让你特别控制日志中输出的内容。

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

看到这篇文章的更多细节 :

祝你好运!

java.util.logging提供了一个全面的日志包,没有其他人提供的额外的行李。

log4j总体来说是一个更好的包,并没有java.util.logging包含的一些麻烦。 我第二,直接使用log4j比使用公共日志logging更容易。

我build议使用Apache Commmons Logging作为日志logging界面。 通过这种方式,您可以随时随地切换日志logging,而无需对代码进行任何更改。

我会去与log4j。 log4j的可能性并没有被废弃!