【问题标题】:Java Logging vs Log4J [closed]Java 日志记录与 Log4J [关闭]
【发布时间】:2010-09-07 02:33:12
【问题描述】:

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

你怎么看?

【问题讨论】:

标签: java logging log4j java.util.logging


【解决方案1】:

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

要获得好的决策树,请查看Log4j vs java.util.logging

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

问题二: 您是否发现自己想要频繁切换日志输出的格式?您是否需要一种简单、灵活的方式来做到这一点?也就是说,你需要Log4j的PatternLayout吗?

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

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

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

【讨论】:

  • 很棒的基于问卷的答案。根据需要各取所需。
  • Log4j vs java.util.logging 链接失效了
  • 干杯 - 把它改成了一台回程机。
【解决方案2】:

我建议您使用Simple Logging Facade for Java (SLF4J)。它支持包括 Log4J 在内的不同提供程序,并可用作 Apache Commons Logging 的替代品。

【讨论】:

  • Commons Logging 出了什么问题?
  • @Bart van Heukelom 和评论支持者 - 阅读articles.qos.ch/thinkAgain.html
  • @Stephen C:感谢您提供的信息,尽管我前段时间了解到这一点,现在我尽可能使用 SLF4J。 (顺便说一句,我的评论是一个真正的问题,而不是保守的评论)
  • @Bart,Commons Logging 使用动态发现的包来使用。 SLF4J 使用(或曾经)需要后端的类来加载。
【解决方案3】:

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

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

  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 也不难。此外,每个附加程序都具有很大的灵活性,可让您具体控制日志中的输出内容。

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

查看这篇文章 more details:

祝你好运!

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 另外,它默认包含并且被Java本身使用(所以无论如何你都会拥有它!)
    【解决方案5】:

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

    【讨论】:

    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      我会选择 log4j。 log4j 的可能性一点都没有过时!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        • 2020-12-07
        • 1970-01-01
        相关资源
        最近更新 更多