BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Log4j版本1生命周期终结

| 作者 Abraham Marín Pérez 关注 8 他的粉丝 ,译者 金灵杰 关注 4 他的粉丝 发布于 2015年9月3日. 估计阅读时间: 4 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

Apache宣布Log4j版本1生命周期终结。虽然Log4j版本2在2014年7月已经发布,版本1仍然维护到2015年8月初。新版本是一个完全重写的日志库,解决了许多版本1的问题,达到了前所未有的性能。Apache已经为简化升级做出了努力,但是高级用户可能需要做一定的迁移工作。

根据Apache的报告,最早发布于1999年的日志框架Log4j版本1有许多架构上的问题和发布过程中的不足,这些问题导致开发起来相当困难。这促使一些维护Log4j的社区开发者放弃了这个框架,转投其他类似的项目,如Logback,这些项目也鼓动开发者这样做。为此,Apache决定从头开始编写Log4j版本2,克服第一个版本的不足之处,恢复部分社区基础。

尽管Log4j版本2有如此多优势,到目前为止它的使用率增长很慢。根据maven中央仓库统计,在写这篇文章的时候,使用Log4j版本2的构件有大约350个,而使用版本1的有将近6000个。相比之下,使用Logback的构件有超过5000个

为了克服这个问题,Apache试图让升级Log4j版本2过程尽可能的简单。对于通过类似SLF4J等日志门面使用Log4j的场景,升级只需要将绑定的jar文件从slf4j-log4j12替换成log4j-slf4j-impl-2.0,移除所有Log4j版本1的引用,添加版本2的实现jar文件。对于直接使用Log4j的场景,用户需要参考Apache的迁移指南,迁移指南提供了两种方案:所有调用都转换成新的API,或者使用桥接jar文件,它将会捕捉所有使用Log4j版本1基础设施的调用,将它们转发到Log4j版本2。

不幸的是,这个桥接文件针对用户代码中有自定义追加器(Appender)、过滤器(Filter)等内容将无法工作,因为这些在Log4j版本2中的工作方式有所不同。例如在Log4j版本1中,自定义一个追加器必须要扩展AppenderSkeleton类,实现和继承其中的方法。而在Log4j版本2中,自定义追加器以插件形式创建,并需要注册。考虑到不得不进行转换工作,在这种场景下完全迁移到新版本可能是一个最好的选择。

另一方面,警惕传递依赖的用户在添加Log4j版本2依赖的时候可能会惊讶。一些用户报告说,新版本的日志框架可能会引入超过30个直接依赖。然而进一步检查发现,大部分依赖不是测试范围的,就是可选的。这意味着实际在生产环境添加的直接依赖不会超过两个。

更简单的替代品

只有非常简单日志记录需求的用户不必为选择不同的日志框架或者处理升级犯愁:从Java 4(1.4)开始,Java包含一个日志记录工具,作为java.util.logging包中的一部分。该工具的效率没有像Log4j或Logback这些库那样高,在功能方面也比较落后。但是由于该工具被包含在标准OpenJDK中,使得它在许多场景下成为一个合适的选择。

查看英文原文: Log4j Version 1 Reaches End of Life


感谢张龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT