log4j vs logback

我们使用自制包装器后面的log4j。 我们现在计划使用更多功能。

我们应该更新到logback吗?

(我的意思是框架不像SLF4J那样)


Logback本地实现SLF4J API。 这意味着如果你使用的是logback,你实际上正在使用SLF4J API。 您理论上可以直接使用logback API的内部进行日志记录,但是非常不鼓励。 所有logback文档和记录器示例都是根据SLF4J API编写的。

所以通过使用logback,你实际上会使用SLF4J,如果因为某种原因想要切换回log4j,只需简单地将slf4j-log4j12.jar放到你的类路径中即可。

从logback迁移到log4j时,logback特定部分(特别是logback.xml配置文件中包含的那些部分)仍然需要迁移到其log4j等效项(即log4j.properties)。 在另一个方向迁移时,需要将log4j配置(即log4j.properties)转换为其等同的logback。 有一个在线工具。 迁移配置文件涉及的工作量远远少于迁移记录器调用遍及所有软件的源代码及其依赖关系所需的工作量。


你应该? 是的

为什么? Log4J基本上已被Logback弃用。

它是否紧急? 也许不会。

它是无痛的吗? 可能,但它可能取决于您的日志记录。

请注意,如果您确实想充分利用LogBack(或SLF4J),那么您确实需要编写正确的日志记录语句。 由于懒惰的评估,这会产生像更快的代码这样的优点,并且由于您可以避免警卫而减少代码行。

最后,我强烈推荐SLF4J。 (为什么用自己的门面重新创建车轮?)


在日志记录世界中有Facades(如Apache Commons Logging,slf4j甚至Log4j 2.0 API)和实现(Log4j 1 + 2,java.util.logging,TinyLog,Logback)。

基本上你应该用slf4j IF替换你的自制包装,并且只有在你出于某种原因不满意的情况下。 尽管Apache Commons Logging并不真正提供现代API,但slf4j和新的Log4j 2外观正在提供这一功能。 鉴于相当多的应用程序使用slf4j作为包装,使用它可能是有意义的。

slf4j给出了许多不错的API糖,就像slf4j文档中的这个例子:

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);

这是变量替代。 Log4j 2也支持这一点。

但是,您需要注意的是,slf4j由QOS开发,他们也维护logback。 Log4j 2.0在Apache Software Foundation中出现。 在过去的三年中,一个充满活力和活跃的社区再次在那里成长。 如果您赞赏开源软件,因为它是由Apache软件基金会完成的,并提供了所有的保证,您可能会重新考虑使用slf4j来支持直接使用Log4j 2。

请注意:

在过去的log4j 1没有积极维护而Logback是。 但今天事情是不一样的。 Log4j 2正在积极维护并几乎定期发布。 它还包括许多现代功能和-imho-使得一些事情比Logback更好。 这有时只是一个品味问题,你应该得出自己的结论。

我写了Log4j 2.0新特性的快速概述:http://www.grobmeier.de/the-new-log4j-2-0-05122012.html

阅读时你会看到Log4j 2受到了Logback的启发,也受到了其他日志框架的启发。 但代码库不同; 它与Log4j 1几乎没有什么分享,而Logback与零分享。 这导致了一些改进,如示例Log4j 2在字面流而不是字符串下操作。 另外它在重新配置时不会松动事件。

Log4j 2可以以比我知道的其他框架更高的速度进行记录:http://www.grobmeier.de/log4j-2-performance-close-to-insane-20072013.html

仍然用户社区似乎比Logbacks大得多:http://www.grobmeier.de/apache-log4j-is-the-leading-logging-framework-06082013.html

所有人都说最好的想法是你选择了最适合你想要实现的日志框架。 如果我在生产环境中禁用日志记录并仅在我的应用程序中执行基本日志记录,则不会切换完整框架。 但是,如果您只需查看一些由框架及其开发人员提供的功能,就可以做更多的事情。 虽然通过QOS获得对Logback的商业支持(我听说),但目前Log4j 2没有任何商业支持。另一方面,如果您需要执行审计日志记录并需要异步appender提供的高性能,那么它对于检查log4j 2。

请注意,尽管他们提供的所有舒适,外墙总是吃一点表演。 这可能不会影响到你,但是如果你的资源不足,你可能需要保存一切。

在不了解你的要求的情况下,几乎不可能提出建议。 只是:切换不是因为很多人切换。 切换只是因为你看到它的价值。 而log4j已经死亡的论证不再计算在内。 它还活着,而且很热。

免责声明:我目前是VP,Apache Logging Services并参与log4j。

链接地址: http://www.djcxy.com/p/36815.html

上一篇: log4j vs logback

下一篇: Trailing slash issue in ASP.Net MVC