2.3 (2015-05-09)

This is the sixth GA release. It contains several bugfixes and new features.

Apache Log4j 2.3 requires a minimum of Java 6 to build and run. This will be the last release of Log4j 2 to support Java 6. Future releases will require a minimum of Java 7.

Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api component, however it does not implement some of the very implementation specific classes and methods. The package names and Maven groupId have been changed to org.apache.logging.log4j to avoid any conflicts with Log4j 1.x.

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.



  • Truncate from the end of text format modifier. (for LOG4J2-926 by Gary Gregory, David Ohana)

  • PatternLayout %highlight to support noConsoleNoAnsi like %style. (for LOG4J2-984 by Gary Gregory, Jonas Höpfner)


  • Update Jackson from 2.5.1 to 2.5.3. (for LOG4J2-1004 by Gary Gregory)

  • Update Slf4j from 1.7.7 to 1.7.12. (for LOG4J2-1005 by Gary Gregory)

  • Migrate tests from Logback 1.1.2 to 1.1.3. (for LOG4J2-987 by Gary Gregory)

  • Update LMAX Disruptor from 3.3.0 to 3.3.2. (for LOG4J2-988 by Gary Gregory)

  • Update tests to use ActiveMQ from 5.10 to 5.11.1. (for LOG4J2-988 by Gary Gregory)

  • Move UTF-8 constant from Charsets to Constants class. Remove Charsets class. (for LOG4J2-995 by Ralph Goers)

  • Make org.apache.logging.log4j.core.Logger#updateConfiguration protected. (for LOG4J2-998 by Gary Gregory, Mariano Gonzalez)


  • JUL Logger.throwing is mis-mapped to ERROR when it should be TRACE. (for LOG4J2-1003 by Gary Gregory, Dan Armbrust)

  • org.apache.logging.log4j.core.util#fileFromUri(URI uri) incorrectly converts '+' characters to spaces. (for LOG4J2-1007 by Ralph Goers, Gary Gregory)

  • org.apache.logging.log4j.core.config.plugins.util.ResolverUtil.extractPath(URL) incorrectly converts '+' characters to spaces. (for LOG4J2-1008 by Ralph Goers, Gary Gregory)

  • Incorrectly defined compressionType parameter to GelfLayout. (for LOG4J2-1009 by Gary Gregory, Mikael Ståldal)

  • A new StatusLoggerAdmin listener is added to StatusLogger every time the log is reconfigured. (for LOG4J2-947 by Gary Gregory, Stefan Wehner)

  • StringFormattedMessage serialization is incorrect. (for LOG4J2-964 by Gary Gregory, Jonne Jyrylä)

  • System.out no longer works after the Console appender and JANSI are initialized. (for LOG4J2-965 by Gary Gregory, Khotyn Huang)

  • KeyStoreConfiguration.createKeyStoreConfiguration() ignores keyManagerFactoryAlgorithm. (for LOG4J2-966 by Gary Gregory)

  • log4j2.component.properties not read for all properties. (for LOG4J2-967 by Gary Gregory, Stefan Wehner)

  • SyslogLayout contains extra space. (for LOG4J2-968 by Gary Gregory, Paul D Johe)

  • Another bad priority in Syslog messages. (for LOG4J2-971 by Gary Gregory, Paul D Johe)

  • org.apache.logging.log4j.core.net.ssl.TlsSyslogInputStreamReader does not need to create temp Integer objects. (for LOG4J2-972 by Gary Gregory)

  • Typo in EventLogger documentation. (for LOG4J2-974 by Gary Gregory, Daniel Galán y Martins)

  • Using monitorInterval with YAML config file format causes JSONParseException. (for LOG4J2-976 by Gary Gregory, Matt Quinn)

  • Numerical overflow in BurstFilter not handled correctly. (for LOG4J2-980 by Gary Gregory, Mikhail Mazurskiy)

  • Incorrect unlock in ProviderUtil. (for LOG4J2-981 by Gary Gregory, Mikhail Mazurskiy)

  • AbstractFilter should not implement equals() and hashCode(). (for LOG4J2-985 by Remko Popma, Sean Dawson)

  • Async root logger config should default includeLocation to false. (for LOG4J2-991 by Remko Popma, Ryan Rupp)

  • Deadlock would occur if appender thread creates a new Logger during reconfiguration. (for LOG4J2-993 by Ralph Goers)