首先来看 Logback 的定位。该项目最初的目标就是成为 log4j 的下一代继任者,延续了 log4j 1.x 的核心设计理念与生态兼容性。整个框架在架构设计上强调灵活性和可扩展性,能够满足各种复杂多变的应用场景。目前的主力版本由三个核心模块组成:logback-core 作为基础支撑层,logback-classic 负责与 SLF4J 无缝集成,logback-access 则专门用于处理 Servlet 容器的访问日志。
如今,Logback 1.5.26 正式版已经发布。此次更新没有进行大规模的改动,而是针对几个关键问题进行了精细化打磨。下面重点介绍:
- 模块化兼容性改进:InsertFromJNDIModelHandler 在调用 javax.naming 相关类时,现在明确声明了可选的 java.naming 模块依赖。这一改进在模块化环境下尤其重要,能够有效避免兼容性问题,具体细节对应 issue #1003。
- 影子打包版本的警告修复:许多应用通过 shadow、fat、shade 等方式进行打包,这往往会导致模块描述符或包元数据丢失。此前,如果 logback-classic 读取不到版本信息,就会直接报出“版本不匹配”的警告,十分烦人。本次更新将版本号内嵌到组件自带的属性文件中,即使打成了 shade 包,也能准确识别版本信息,不再误报。这项改进对应 issue #1002。
- 构建可复现性:本次发布的二进制文件完全可以通过源码复现。具体指向 GitHub 标签 v_1.5.26 下的 commit 33deb54,构建环境使用 Java "21" 2023-10-17 LTS(版本号 21.0.1.+12-LTS-29),操作系统为 Linux Debian 11.6。想要自行验证的同学,按照同样的环境搭建即可。
总体来看,这次更新虽然不属于大版本,但解决的都是在实际使用中令人头疼的阻塞性问题,尤其是 shadow 打包带来的版本警告,终于得到了彻底根治。
