Apache Log4j team is pleased to announce the 2.21.0
release. Apache Log4j is a versatile, industrial-strength
Java logging framework composed of an API, its implementation,
and components to assist the deployment for various use cases.
For further information (support, download, etc.) see the project
website[1].

[1] https://logging.apache.org/log4j

== Release Notes

This release primarily focuses on enhancements to our OSGi and JPMS support and 
contains several bug fixes.
It will be the first release built and signed by the CI using the 
https://keyserver.ubuntu.com/pks/lookup?search=077E8893A6DCC33DD4A4D5B256E73BA9A0B592D0&op=index[ASF
 Logging Services Release Manager GPG key], which is shared in 
https://www.apache.org/dist/logging/KEYS[KEYS].

The Log4j 2.21.0 API, as well as the other artifacts, maintains binary 
compatibility with the previous release.

Apache Log4j 2.21.0 requires Java 8 to run.
The build requires JDK 11 and generates reproducible binaries.

For complete information on Apache Log4j 2, including instructions on how to 
submit bug reports, patches, get support, or suggestions for improvement, see 
http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].

=== OSGi changes

All the published artifacts are OSGi bundles or fragments.

This release introduces a change in the bundle symbolic names to allow them to 
function as JPMS module name: all hyphens `-` present in the bundle names of 
previous releases were replaced by dots `.`.

=== JPMS changes

All the published artifacts have been migrated from automatic modules to named 
JPMS modules.
All packages marked as private in the Javadoc are not exported.

The module name of four bridges (`log4j-slf4j-impl`, `log4j-slf4j2-impl`, 
`log4j-to-jul` and `log4j-to-slf4j`) have been changed to adhere to the same 
convention as the OSGi bundle names.

=== Added

* Added marker parent support to `JsonTemplateLayout` (#1381)
* Added https://facebook.github.io/zstd/[ZStandard compression] support (#1508, 
#1514)
* Added a warning for incorrect syntax of highlighting styles (#1545, #1637)

=== Changed

* Open `FileExtension` methods to allow their usage in custom 
``RolloverStrategy``s (#1365, #1683)
* Bumped the minimum Java version required for the build to JDK 11. Runtime 
requirements remain unchanged. (#1369)
* Set the default `minLevel` and `maxLevel` of `LevelRangeFilter` to `OFF` and 
`ALL`, respectively (#1503)
* Removed additional `isFiltered` checks in `AsyncLoggerConfig` (#1550)
* Use Java version-specific warnings in `StackLocator` (#1760)
* Started logging a status error event instead of an NPE in 
`OsgiServiceLocator.loadServices(Class, Lookup, boolean)` when a bundle has no 
valid `BundleContext` for a service type
* Implemented a CI-based release process
* Update Eclipse Angus Activation to version 
https://github.com/eclipse-ee4j/angus-activation/releases/tag/2.0.1[2.0.1] 
(#1591)
* Update Eclipse Angus Mail to version 
https://github.com/eclipse-ee4j/angus-mail/releases/tag/2.0.2[2.0.2] (#1591)
* Update `com.datastax.cassandra:cassandra-driver-core` to version 3.11.5 
(#1591)
* Update Apache Cassandra to version 
https://github.com/apache/cassandra/blob/cassandra-3.11/CHANGES.txt[3.11.16] 
(#1591)
* Update Apache Commons Compress to version 
https://commons.apache.org/proper/commons-compress/changes-report.html#a1.24.0[1.24.0]
 (#1591)
* Update Apache Commons CSV to version 
https://commons.apache.org/proper/commons-csv/changes-report.html#a1.10.0[1.10.0]
 (#1591)
* Update Jackson to version 
https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.15.2[2.15.2] (#1591)
* Update Jakarta Activation API to version 
https://jakarta.ee/specifications/activation/2.1/changelog/[2.1.2] (#1591)
* Update Jakarta Mail API to version 
https://jakarta.ee/specifications/mail/2.1/changelog/[2.1.2] (#1591)
* Update JCTools to version 
https://github.com/JCTools/JCTools/blob/master/RELEASE-NOTES.md[4.0.1] (#1591)
* Update Apache Kafka to version 
https://archive.apache.org/dist/kafka/3.4.0/RELEASE_NOTES.html[3.4.0] (#1591)
* Update Kubernetes client to version 
https://github.com/fabric8io/kubernetes-client/releases?q=5.12.4[5.12.4] (#1591)
* Update `org.mongodb:mongodb-driver-core` to version 4.10.2 (#1591)
* Update `io.netty:netty-bom` to version 4.1.97 (#1591)
* Update Spring Boot to version 
https://github.com/spring-projects/spring-boot/releases/tag/v2.7.15[2.7.15] 
(#1591)
* Update Spring Framework to version 
https://github.com/spring-projects/spring-framework/releases/tag/v5.3.29[5.3.29]
 (#1591)
* Update Tomcat JULI to version 10.0.27 (#1591)
* Update Woodstox to version 
https://github.com/FasterXML/woodstox/blob/master/release-notes/VERSION[6.5.1] 
(#1591)

=== Removed

* Moved `log4j-jmx-gui` to 
https://github.com/apache/logging-log4j-jmx-gui/actions[its own repository] 
along with its own release cycle

=== Fixed

* Added validation to rolling file manager path conditions (#1231)
* Adapted the OSGi metadata of `log4j-to-slf4j` to work with SLF4J 1 and 2. To 
achieve that used a version range of `[1.7,3)` for the imported SLF4J packages. 
(#1232)
* Fixed Javadoc failures (#1275, #1753)
* Removed locale-dependent `toLowerCase/toUpperCase` calls (#1281)
* Redirected old `/<module>/apidocs` URLs (broken in 2.20.0) to 
`/javadoc/<module>` (#1284)
* Added environment variable arbiter (#1312)
* Fixed logging of `java.sql.Date` objects by appending it before Log4J tries 
to call `java.util.Date.toInstant()` on it (#1366)
* Adapted the OSGi metadata of `log4j-api`, `log4j-core`, `log4j-slf4j-impl` 
and `log4j-slf4j2-impl` to activate the bundle when it is accessed. To achieve 
that set the `Bundle-ActivationPolicy` to `lazy` for the log4j bundles. (#1367)
* Avoided using released objects in `StackTraceStringResolver` of 
`JsonTemplateLayout` (#1380)
* Added missing setter for `connectionStringSource` in `MongoDb4Provider` 
builder (#1389)
* Fixed NPE in `PluginElementVisitor` (#1391)
* Added `columnType` as alias for the column mapping `type` attribute (#1405)
* Restored `Log4jMarker` visibility in SLF4J adapters (#1414)
* Fixed buffer size in `Log4jFixedFormatter` date time formatter (#1418)
* Fixed the propagation of synchronous action failures in `RollingFileManager` 
and `FileRenameAction` (#1445, #1549)
* Fixed `RollingFileManager` to propagate failed synchronous actions correctly 
(#1445)
* Replaced the usage of `System.out` in `StackLocator` for warnings with 
`System.err` (#1484)
* Fixed concurrent date-time formatting issue in `PatternLayout` (#1485)
* Fixed runtime dependencies documentation (#1530)
* Allowed to override FQCN in `Log4jEventBuilder` by implementing 
`CallerBoundaryAware` (#1533)
* Migrated MongoDB tests to JUnit 5 and Flapdoodle Embedded MongoDB 4 (#1589)
* Rewrote message parameter formatter with improved escape handling (#1626)
* Improved formatting and serialization of `StackTraceElement` on JDK 9+ (#1640)
* Fixed `MemoryMappedFileAppender` buffer unmapping on JRE 9+ (#1646)
* Fixed rollover strategy in the Log4j 1.x compatibility layer (#1650)
* Removed incorrect mention of `base64` lookup and improve the rest of the 
lookup manual (#1681, 
https://issues.apache.org/jira/browse/LOG4J2-3504[LOG4J2-3504])
* Implemented `LocationAware` for `JsonTemplateLayout`, since this was causing 
location not being passed to underlying appenders (#1692)
* Added support for `long` values in MongoDb 4 appender to configure 
`collectionSize` (#1747)
* Only shutdown Log4j after last `Log4jServletContextListener` is executed 
(#1782)
* Allowed using Spring Arbiter without a Spring environment (#1783)
* Fixed context data loss if `<AsyncLogger>` components are used with an all 
async logger context (#1786)
* Fixed `JsonTemplateLayout` NPE thrown on custom log levels (#1805)
* Improved `Log4j-config.xsd` schema 
(https://issues.apache.org/jira/browse/LOG4J2-170[LOG4J2-170])
* Fixed NPE in `ContextSelector` 
(https://issues.apache.org/jira/browse/LOG4J2-3217[LOG4J2-3217], #1538)
* Avoided allocating ``ThreadLocal``s in `AbstractLogger` when they are 
disabled, since this was causing memory leaks due to retained reference to 
class loaders in web applications 
(https://issues.apache.org/jira/browse/LOG4J2-3657[LOG4J2-3657])
* Fixed `%notEmpty` directive of `PatternLayout` for empty MDC/NDC inputs 
(https://issues.apache.org/jira/browse/LOG4J2-3660[LOG4J2-3660])
* Fixed file descriptor leak on Tomcat 
(https://issues.apache.org/jira/browse/LOG4J2-3663[LOG4J2-3663])
* Ensured `FileOutputStream` is closed in `CommonsCompressAction.execute()`

Reply via email to