跳转至

logging-log4j2 2.21.0

```markdown 这次发布主要集中在增强对OSGi和JPMS的支持,并包含若干错误修复。它将是第一个由CI使用ASF Logging Services Release Manager GPG key构建和签名的版本,该密钥在KEYS中共享。

Log4j 2.21.0 API及其他工件保持与之前版本的二进制兼容性。

Apache Log4j 2.21.0需要Java 8运行,构建需要JDK 11并生成可重现的二进制文件。

有关Apache Log4j 2的完整信息,包括如何提交错误报告、补丁、获取支持或改进建议,请参见Apache Log4j 2网站

OSGi 变化

所有发布的工件都是OSGi包或片段。

此版本引入了包符号名称的更改,以允许它们作为JPMS模块名称:将之前版本中包名称中的所有连字符-替换为点.

JPMS 变化

所有发布的工件已从自动模块迁移到命名的JPMS模块。所有在Javadoc中标记为私有的包都不会导出。

四个桥接模块(log4j-slf4j-impllog4j-slf4j2-impllog4j-to-jullog4j-to-slf4j)的模块名称已更改,以遵循与OSGi包名称相同的约定。

新增

  • JsonTemplateLayout添加了标记父支持。
  • 添加了ZStandard压缩支持。
  • 添加了对高亮样式语法错误的警告。

变更

  • 开放FileExtension方法以允许在自定义RolloverStrategy中使用。
  • 将构建所需的最低Java版本提升到JDK 11。运行时要求保持不变。
  • LevelRangeFilter的默认minLevelmaxLevel设置为OFFALL
  • 移除了AsyncLoggerConfig中的额外isFiltered检查。
  • StackLocator中使用Java版本特定的警告。
  • 当包没有有效的BundleContext用于服务类型时,开始记录状态错误事件而不是NPE。
  • 实现了基于CI的发布流程。
  • 更新Eclipse Angus Activation到版本2.0.1
  • 更新Eclipse Angus Mail到版本2.0.2
  • 更新com.datastax.cassandra:cassandra-driver-core到版本3.11.5。
  • 更新Apache Cassandra到版本3.11.16
  • 更新Apache Commons Compress到版本1.24.0
  • 更新Apache Commons CSV到版本1.10.0
  • 更新Jackson到版本2.15.2
  • 更新Jakarta Activation API到版本2.1.2
  • 更新Jakarta Mail API到版本2.1.2
  • 更新JCTools到版本4.0.1
  • 更新Apache Kafka到版本3.4.0
  • 更新Kubernetes客户端到版本5.12.4
  • 更新org.mongodb:mongodb-driver-core到版本4.10.2。
  • 更新io.netty:netty-bom到版本4.1.97。
  • 更新Spring Boot到版本2.7.15
  • 更新Spring Framework到版本5.3.29
  • 更新Tomcat JULI到版本10.0.27。
  • 更新Woodstox到版本6.5.1

移除

修复

  • 为滚动文件管理器路径条件添加了验证。
  • 适配log4j-to-slf4j的OSGi元数据以与SLF4J 1和2一起工作。为实现这一点,使用了[1.7,3)的版本范围。
  • 修复了Javadoc失败。
  • 移除了依赖于区域设置的toLowerCase/toUpperCase调用。
  • 将旧的/<module>/apidocs URL(在2.20.0中损坏)重定向到/javadoc/<module>
  • 添加了环境变量仲裁器。
  • 通过在Log4J尝试调用java.util.Date.toInstant()之前附加它来修复java.sql.Date对象的日志记录。
  • 适配log4j-apilog4j-corelog4j-slf4j-impllog4j-slf4j2-impl的OSGi元数据,以在访问时激活包。为实现这一点,将log4j包的Bundle-ActivationPolicy设置为lazy
  • 避免在JsonTemplateLayoutStackTraceStringResolver中使用已释放的对象。
  • MongoDb4Provider构建器添加了缺失的connectionStringSource设置器。
  • 修复了PluginElementVisitor中的NPE。
  • 为列映射type属性添加了columnType别名。
  • 恢复了SLF4J适配器中的Log4jMarker可见性。
  • 修复了Log4jFixedFormatter日期时间格式化器中的缓冲区大小。
  • 正确传播RollingFileManagerFileRenameAction中的同步操作失败。
  • 修复了RollingFileManager以正确传播失败的同步操作。
  • StackLocator中将警告的System.out替换为System.err
  • 修复了PatternLayout中的并发日期时间格式化问题。
  • 修复了运行时依赖文档。
  • 通过实现CallerBoundaryAware允许在Log4jEventBuilder中覆盖FQCN。
  • 将MongoDB测试迁移到JUnit 5和Flapdoodle Embedded MongoDB 4。
  • 重写了消息参数格式化器,改进了转义处理。
  • 改进了JDK 9+上的StackTraceElement格式化和序列化。
  • 修复了JRE 9+上的MemoryMappedFileAppender缓冲区解除映射。
  • 修复了Log4j 1.x兼容层中的滚动策略。
  • 移除了对base64查找的错误提及并改进了其余的查找手册。
  • 实现了JsonTemplateLayoutLocationAware,因为这导致位置未传递到底层附加器。
  • 在MongoDb 4附加器中添加了对配置collectionSizelong值支持。
  • 仅在最后一个Log4jServletContextListener执行后关闭Log4j。
  • 允许在没有Spring环境的情况下使用Spring Arbiter。
  • 修复了在使用全异步日志记录器上下文时<AsyncLogger>组件的上下文数据丢失。
  • 修复了在自定义日志级别上抛出的JsonTemplateLayout NPE。
  • 改进了Log4j-config.xsd模式。
  • 修复了ContextSelector中的NPE。
  • 避免在禁用时在AbstractLogger中分配ThreadLocal,因为这会导致由于在Web应用程序中保留对类加载器的引用而导致的内存泄漏。
  • 修复了PatternLayout