写点什么

过渡到全新 Log4j:Log4j 项目管理委员会访谈

  • 2015-09-13
  • 本文字数:2171 字

    阅读完需:约 7 分钟

正如最近在 InfoQ 上发布的,Apache 软件基金会宣布 Log4j 版本 1 生命周期终结,鼓励用户升级到流行的日志框架:Log4j 版本 2。

InfoQ 和 Apache 日志服务团队的成员接触,试图找到更多关于新版本 Log4j 的过渡和它的特性。他们是 Apache 日志项目管理委员会成员、 Log4j 2 最初发起者Ralph Goers,Apache 日志项目管理委员会成员 Remko Popma 和 Gary Gregory,Apache 日志项目管理委员会主席 Christian Grobmeier。

InfoQ**:尽管Lo4j2发布刚过了一年,根据maven中央仓库的统计,版本1仍然比版本2更加受欢迎。你们认为生命周期终结会促使用户迁移到新版本吗?**

Remko:我希望生命周期终结至少会提高人们对 Log4j2 存在的认识。我非常理解有的时候没有动机来改变这种没有引起任何问题的东西,但是我也希望生命周期终结将会激励用户至少在新项目中使用 Log4j2。

Christian:生命周期终结也许只是一个标签,但是我们都知道之后将不太可能有人会投入大量时间去发布 Log4j1 的新版本了。它的构建是相当恐怖的复杂。正因为不在会有新的发布,这也可能导致一些安全问题。事实上我们有完备的 Log4j1 缺陷跟踪系统,用户仍然可以自由的报告问题,但是除非他们同时提交补丁,否则我们将不在修复。这表示,如果只出于安全方面原因,用户也应该考虑升级。

InfoQ**:现在看起来重写Log4j新版本的主要原因是为了克服版本1中架构上种种挑战。然而,仍然有很多只有简答日志记录需求的用户,可能不需要现在正在开发的新特性,你们会怎样告诉这些用户,说服他们迁移到版本2上?**

Remko:“简单的日志记录需求”一般表示“我们很忙,没有空去分析我们的未来的日志记录需求,或者花时间比较各种可选框架”。完全可以理解。我想说的是,Log4j2 是一个完美的选择:它易于使用,令人惊叫的快,并且在功能和灵活性上有难以置信的深度,可以适应未来增长的需求。

Ralph:虽然我们推荐用户升级到 Log4j2,但是如果他们愿意,他们仍然能够自由的使用 Log4j1。然而,用户应该知道,虽然他们能够继续报告在使用 Log4j1 时遇到的问题,但是这些问题只有在用户提供补丁或者寻找其他愿意修复人之后才有可能被修复。

Gary:有一点有目共睹的是,对我们(开发者)非所有(用户)来说,我们都是志愿者,这表示我们只有有限的时间和资源,因此,我们需要决定什么是奉献这些资源最有效的方式。在 Log4j1 上进行更改太困难,将同样的努力聚焦到版本 2 上,我们可以获得更多的价值。

另外,生命周期终结只是说说而已。如果开发者愿意,可能会有新的版本发布。但是一些问题可能只有在新的架构和版本中才能被方便的定位。

InfoQ**:由于不得不停止使用Log4j版本1,一些开发者可能会考虑移植到不同的日志框架,而不是简单的升级到版本2,这会是一个顾虑吗?**

Remko:我强烈感觉到 Log4j2 对于其他可选框架是有竞争力的。这里有一些 Log4j2 的特性,我可以用来突出证明:

  • 社区支持:Log4j2 有活跃的社区,在这里有问题的回答,特性的增加和缺陷的修复。
  • 超低的性能影响:异步日志记录器( Asynchronous Loggers)提供性能类似于日志记录完全关闭的水平
  • 稳定性 / 可靠性:自动加载修改后的配置,并且在重新配置时不会丢失日志事件。
  • 有丰富的功能集,包括自定义日志级别,过滤(基于上下文数据、标记、正则表达式和日志事件中的其他组件)和查找
  • 可插拔架构:通过构建自定义组件,可以方便的扩展。
  • 支持的 API:Log4j2 可以被直接使用,或者通过 SLF4J、Commons Logging、Log4j1 和 java.util.logging 日志接口间接使用。
  • 即将发布的 2.4 版本会支持 Java 8 的 lambda 表达式。

InfoQ**:你们认为Log4j版本1生命周期终结的时机是对的吗?如果你们可以改变,你们会将这个时间点提前、延后还是保持不变?**

Remko:我认识它是正确的。Log4j2 迄今已经有 19 次发布了,最后 6 次被标记为正式发布版本(General Availability)。从第一个 GA(General Availability)版本发布以来,已经有超过一年的时间,Log4j2 已经被证明是非常稳定的。这使得我们认为 Log4j2 是 Log4j1 安全的替代品,因此这是一个非常好的实际来声明上一个版本的终结。

Ralph:我们对于生命周期终结的声明,只是对近几年来已经没有人在位 Log4j1 修复缺陷的这个事实承认。在某种程度上说,版本 1 的生命周期已经终结了很久了。我们只是需要确保在 Log4j1 正式退休前,Log4j2 已经是稳定、可靠的替换版本。

InfoQ**:你们认为日志记录领域最大的挑战将会是什么?针对Log4j的又会是什么?**

Remko:就个人而言,我将继续提升 Log4j2 的性能,尤其是在同步日志记录场景下。我认为在这个领域仍然有很多提升的可能。一个更大的挑战或许是日志管理:收集、集中化聚合、长期保留、日志分析、日志搜索和报告。已经有产品尝试解决这些问题,或许如果有标准出现,Log4j 可以做一些工作,让这些任务更加容易。

Apache 软件基金会为希望从版本 1 升级到版本 2 的用户创建了一份迁移指南,同时提供了建议采用的 Log4j2 特性摘要

查看英文原文: The Transition to a New Log4j: a Q&A with Log4j’s Project Management Committee


感谢张龙对本文的审校。

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

2015-09-13 19:003853

评论

发布
暂无评论
发现更多内容

RabbitMQ之路由和通配符模式,附源码注释讲解

小Q

Java 学习 架构 面试 RabbitMQ

架构师训练营 W02 总结

Geek_f06ede

架构师训练

第五周作业

icydolphin

极客大学架构师训练营

一个90后码农的真实经历,希望大家可以不留遗憾;

Java架构师迁哥

LeetCode题解:78. 子集,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营第二期 - 第二周作业

john_zhang

极客大学架构师训练营

阿里五位MySQL封神大佬耗17个月总结出53章性能优化法则

996小迁

Java MySQL 大数据 架构 面试

架构师训练营 1 期第 6 周:技术选型(二) - 作业

piercebn

极客大学架构师训练营

前端不得不懂的架构知识(上)

执鸢者

架构 大前端

架构作业 -- CAP原理

Nick~毓

怎么样让自己的博客被谷歌和百度收录!

java金融

百度 SEO 博客收录 谷歌收录

第1周 架构方法-作业

SuGeek

数据库JDBC:Statement查询

正向成长

JDBC sql查询 SQL光标

全网首发,做第一人纯源码讲解RabbitMQ实践,收藏吧

小Q

Java 学习 架构 面试 RabbitMQ

【Java】变量声明在循环体内还是循环体外你选哪一个咧?

java金融

Java 变量声明

Week2 - 框架设计

evildracula

学习 架构

第六周作业

alpha

极客大学架构师训练营

架构师训练营第二周学习总结

邢永春

架构师训练营第二周作业

邢永春

云小课|云数据库RDS实例连接失败了?送你7大妙招轻松应对

华为云开发者联盟

数据库 网络 ssl RDS实例 端口

架构师训练营第六周课后练习

薛凯

第六周总结

alpha

极客大学架构师训练营

【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??

冰河

MySQL 分布式事务 一致性 XA

渣渣2本学历CRUD一年半,决定改变现状,努力学习两个月成功拿到美团30k offer

Java架构之路

Java 程序员 架构 面试 编程语言

Double Kill!! 数据联邦修炼之路

脑极体

第二周作业

Griffenliu

第二周总结

Griffenliu

第六周

等燕归

架构师训练营 - 作业 - 第六周

Max2012

十八般武艺玩转GaussDB(DWS)性能调优(二):坏味道SQL识别

华为云开发者联盟

数据库 sql 性能调优 GaussDB 算子

架构师训练营 W02 作业

Geek_f06ede

架构师训练

过渡到全新Log4j:Log4j项目管理委员会访谈_Java_Abraham Marín Pérez_InfoQ精选文章