Log4j 2.0和SLF4J以及java日志框架的永无止境的未来

Log4j 2.0和SLF4J以及java日志框架的永无止境的未来,java,logging,log4j,slf4j,logback,Java,Logging,Log4j,Slf4j,Logback,所以我今天才发现log4j2.0现在正在积极开发中,有一个alpha版本,据说它将取代logback 现在在我的应用程序中,我有近4个日志框架,可能更多: Java Util日志记录 log4j slf4j logback(由于maven提供的黑客攻击而被忽略) commons日志(由于maven提供的hack而被忽略) tomcat有自己的JULI适配器 我一直在使用log4j(1.2.x),因为坦率地说,我不需要更新版本的功能,但我最近很想切换到SLF4J,主要是因为我不想将复杂的log

所以我今天才发现log4j2.0现在正在积极开发中,有一个alpha版本,据说它将取代logback

现在在我的应用程序中,我有近4个日志框架,可能更多:

  • Java Util日志记录
  • log4j
  • slf4j
  • logback(由于maven提供的黑客攻击而被忽略)
  • commons日志(由于maven提供的hack而被忽略)
  • tomcat有自己的JULI适配器
我一直在使用log4j(1.2.x),因为坦率地说,我不需要更新版本的功能,但我最近很想切换到SLF4J,主要是因为我不想将复杂的log4j配置文件重写为新格式(logback)

现在,我的问题是,在给定log4j 2.0的情况下,我应该针对SLF4J编写代码,以确定SLF4J是否是未来的正确选择

似乎我应该坚持使用旧的log4j(
1.2.x
),因为它是最低的公分母


更新:在进一步检查log4j 2.0时,虽然非常类似,但配置似乎与log4j 1.2不向后兼容。看来回写是最好的选择。

这是一个主观问题

我建议使用slf4j,因为如果您需要的话,它可以使用log4j作为后端


您可能正在使用许多组件,这些组件可能都使用不同的日志API。能够通过这些API将输出整合到单个输出路径中是件好事。

免责声明:我是log4j、slf4j和logback项目的创始人,但与log4j 2.0无关


据我所知,尽管名称不同,log4j2.0与log4j1.x有很大的不同。就用户API而言,log4j2.0在很大程度上与log4j1.x不兼容。Log4j 2.0为Log4j 1.x提供了一个适配层,目前(2012-08年)是。

对于我们组合的一些项目,日志框架更多地由我们使用的开源框架驱动。但这是一种偏好。是的,我也做过类似的工作,但好的OLELOG4J几乎出现在每个项目中,除了真正新的项目,它是我唯一记得如何配置的项目。切换中最大的麻烦实际上是配置和支持的appender。使用SLF4J编码,并在运行时选择后端。如果您使用的是SLF4J Api,那么更改日志后端不是问题。是的,我认为SLF4J就是我要使用的。我把门面和门面搞混了。Log4j 2.0不是一个门面,也不宣传它是一个门面。我还建议使用它作为slf4jI的一个方便的静态包装器。我想我是希望日志(GUL)的大统一,但我想像物理学(GUT)一样,这不会很快发生:)。顺便说一句,感谢log4j(原件)。我对log4j 2.0(在logback之上)的兴趣是,与更改10个左右项目的配置相比,不必将配置切换到新的logback样式(IMHO更容易重构到SLF4J)。您熟悉log4j.properties转换器吗?它可以极大地帮助将log4j.properties迁移到logback.xml。试试看,我想我隐约记得在logback项目中看到过,但我需要一个XML格式的转换器。我应该增强转换器以处理log4j.XML。Log4J2网站报告说,有一个用于SLF4J的适配器,因此如果您将代码编写到SLF4J,您可以随时切换到log4j、Log4J2和logback。这是桥: