✔ Binaries
✔ Sources
✔ Website (incl. Javadocs)
𐄂 Website URL[1]
✔ Signatures
✔ Checksums

+1

Thanks for taking care of the release Christian!

[1] Christian's recent Jekyll experiment on the `asf-staging` branch
of `logging-site` repository confused the INFRA and it is acting
strangely. This will *NOT* be an issue when we push the website
changes to production, i.e., `asf-site` branch. Though we will try
fixing `asf-staging` anyway in the meantime.

This release incorporates a humongous amount of infrastructural
changes to the project that Piotr and I have been working on for
months. My personal favorites:

1. Support for parallel Maven builds! First run is always a bumpy one
due to the mysterious ways plugins operate. Though so far I have been
enjoying `./mvnw -T2C install -DskipTests` or `./mvnw verify -T2C -pl
\!:log4j-mongodb3,\!:log4j-mongodb4` a lot! See the `-T2C` there? Yup!
(Embedded MongoDb server library's initial setup functionally doesn't
support concurrent runs.)

2. Stellar CI support! We migrated all Maven-based projects
(`logging-parent`, `-log4j2`, `-log4j-tools`, `-log4j-scala`,
`-log4j-kotlin`, `-log4j-transform`, `-log4j-jmx-gui`) to a unified CI
infrastructure where they all share the same automated release process
and `dependabot` auto-merge voodoo! Christian single-handedly cutting
this release himself is a solid proof of this convenience.

3. Major-version-specific URL convenience:
https://logging.apache.org/log4j/kotlin/latest (redirected to `1.x`)
https://logging.apache.org/log4j/kotlin/1.x
Notice the `latest` and `1.x`? We *will* apply the same practice to
Log4j too. You will eventually be seeing:
https://logging.apache.org/log4j/latest (redirected to `2.x`)
https://logging.apache.org/log4j/1.x
https://logging.apache.org/log4j/2.x
https://logging.apache.org/log4j/3.x

4. Every dependency that is upgradable is upgraded.


On Fri, Oct 13, 2023 at 11:09 AM Christian Grobmeier
<grobme...@apache.org> wrote:
>
> This is a vote to release the Apache Log4j 2.21.0.
>
> Website: https://logging-log4j.staged.apache.org/log4j/2.x/
> GitHub: https://github.com/apache/logging-log4j2
> Commit: 3333493d9a9daabc72d10582c4682538baa93a2a
> Distribution: https://dist.apache.org/repos/dist/dev/logging/log4j
> Nexus: 
> https://repository.apache.org/content/repositories/orgapachelogging-1202
> Signing key: 0x077e8893a6dcc33dd4a4d5b256e73ba9a0b592d0
>
> Please download, test, and cast your votes on this mailing list.
>
> [ ] +1, release the artifacts
> [ ] -1, don't release, because...
>
> This vote is open for 72 hours and will pass unless getting a
> net negative vote count. All votes are welcome and we encourage
> everyone to test the release, but only the Logging Services PMC
> votes are officially counted.
>
> == 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