You are viewing a plain text version of this content. The canonical link for it is here.
Posted to announce@apache.org by Ralph Goers <rg...@apache.org> on 2023/02/22 05:52:08 UTC

[ANNOUNCE] Apache Log4j 2.20.0 released

The Apache Log4j 2 team is pleased to announce the Log4j 2.20.0 release!

Apache Log4j is a well known framework for logging application behavior. Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many other modern features such as support for Markers, lambda expressions for lazy logging, property substitution using Lookups, multiple patterns on a PatternLayout and asynchronous Loggers. Another notable Log4j 2 feature is the ability to be "garbage-free" (avoid allocating temporary objects) while logging. In addition, Log4j 2 will not lose events while reconfiguring.

The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html.

This release primarily contains bug fixes and minor enhancements.

Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters. log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j2-impl should be used with SLF4J 2.x and later. SLF4J-1.8.x is no longer supported as there were never any GA versions of that. Note that while log4j-slf4j-impl has a dependency on slf4j 1.7.25 in order to not break compatibility for users, newer versions of SLF4J 1.7 may be used instead.

The Log4j 2.20.0 API, as well as many core components, maintains binary compatibility with previous releases.

Apache Log4j 2.20.0 requires a minimum of Java 8 to build and run. Log4j 2.12.4 is the last release to support Java 7. Log4j 2.3.2 is the last release to support Java 6. Java 6 and Java 7 are no longer supported by the Log4j team.

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

Changes

Added
• Add support for timezones in RollingFileAppender date pattern (for LOG4J2-1631 by Piotr P. Karwasz, Danas Mikelinskas)
• Add LogEvent timestamp to ProducerRecord in KafkaAppender (for LOG4J2-2678 by Piotr P. Karwasz, Federico D’Ambrosio)
• Add PatternLayout support for abbreviating the name of all logger components except the 2 rightmost (for LOG4J2-2785 by Ralph Goers, Markus Spann)
• Removes internal field that leaked into public API. (for LOG4J2-3615 by Piotr P. Karwasz)
• Add a LogBuilder#logAndGet() method to emulate the Logger#traceEntry method. (for LOG4J2-3645 by Piotr P. Karwasz)

Changed
• Simplify site generation (for 1166 by Volkan Yazıcı
• Switch the issue tracker from JIRA to GitHub Issues (for 1172 by Volkan Yazıcı)
• Remove liquibase-log4j2 maven module (for 1193 by StevenMassaro)
• Fix order of stacktrace elements, that causes cache misses in ThrowableProxyHelper. (for 1214 by alex-dubrouski, Piotr P. Karwasz)
• Switch from com.sun.mail to Eclipse Angus. (for LOG4J2-3554 by Oleh Astappiev, Piotr P. Karwasz)
• Add Log4j2 Core as default runtime dependency of the SLF4J2-to-Log4j2 API bridge. (for LOG4J2-3601 by afs, Piotr P. Karwasz)
• Replace maven-changes-plugin with a custom changelog implementation (for LOG4J2-3628 by Volkan Yazıcı)

Deprecated
• Deprecate support for package scanning for plugins (for LOG4J2-3644 by Ralph Goers)

Fixed
• Copy programmatically supplied location even if includeLocation="false". (for 1197 by Piotr P. Karwasz)
• Eliminate status logger warning, when disableAnsi or noConsoleNoAnsi is used the style and highlight patterns. (for 1202 by wleese, Piotr P. Karwasz)
• Fix detection of location requirements in RewriteAppender. (for 1274 by amirhadadi, Piotr P. Karwasz)
• Replace regex with manual code to escape characters in Rfc5424Layout. (for 1277 by adwsingh)
• Fix java.sql.Time object formatting in MapMessage (for LOG4J2-2297 by Ralph Goers)
• Fix previous fire time computation in CronTriggeringPolicy (for LOG4J2-3357 by Ralph Goers)
• Correct default to not include location for AsyncRootLoggers (for LOG4J2-3487 by Ralph Goers, Dave Messink)
• Lazily evaluate the level of a SLF4J LogEventBuilder (for LOG4J2-3598 by Piotr P. Karwasz)
• Fixes priority of Legacy system properties, which are now back to having higher priority than Environment variables. (for LOG4J2-3615 by adwsingh, Piotr P. Karwasz)
• Protects ServiceLoaderUtil from unchecked ServiceLoader exceptions. (for LOG4J2-3624 by Piotr P. Karwasz)
• Fix Configurator#setLevel for internal classes (for LOG4J2-3631 by Piotr P. Karwasz, Jeff Thomas)
• Fix level propagation in Log4jBridgeHandler (for LOG4J2-3634 by Piotr P. Karwasz, Marcel Koch)
• Disable OsgiServiceLocator if not running in OSGI container. (for LOG4J2-3642 by adwsingh, Piotr P. Karwasz)
• When using a Date Lookup in the file pattern the current time should be used. (for LOG4J2-3643 by Ralph Goers)
• Fixed LogBuilder filtering in the presence of global filters. (for LOG4J2-3647 by Piotr P. Karwasz)