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,包括:
- 是ConsoleAppender
- DailyRollingFileAppender
- ExternallyRolledFileAppender
- FileAppender
- JDBCAppender
- JMSAppender
- NTEventLogAppender
- RollingFileAppender进行
- SMTPAppender
- SocketAppender
- SyslogAppender
- TelnetAppender
- 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的可能性并没有被废弃!