2.12.1 (2019-08-06)

This release contains bugfixes and minor enhancements.

This release improves the performance of capturing location information, makes log4j-core optional in the log4j 1.2 bridge, and explicitly removes LoggerContext references from components that keep track of them when the LoggerContext is shut down. More details on the new features and fixes are itemized below.

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-slf4j18-impl should be used with SLF4J 1.8.x and later.

Note that the XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the timeMillis attribute and instead have an Instant element with epochSecond and nanoOfSecond attributes.

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

Log4j 2.12.1 requires a minimum of Java 8 to build and run. Log4j 2.3 was the last release that supported Java 6 and Log4j 2.11.2 is the last release to support 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.



  • Make Log4j Core optional for Log4j 1.2 API. (for LOG4J2-2556 by Ralph Goers)

  • Update MongoDB 3 driver from 3.10.1 to 3.10.2. (for LOG4J2-2646 by Gary Gregory)

  • Improve exception messages in the JDBC appender. (for LOG4J2-2657 by Gary Gregory)

  • Retry when JDBC throws a java.sql.SQLTransactionRollbackException in commitAndClose(). (for LOG4J2-2660 by Gary Gregory)


  • Allow file renames to work when files are missing from the sequence. (for LOG4J2-1946 by Ralph Goers, Igor Perelyotov)

  • Remove references to LoggerContext when it is shutdown. (for LOG4J2-2366 by Ralph Goers)

  • Improve the performance of capturing location information. (for LOG4J2-2644 by Ralph Goers)

  • Support emulating a MAC address when using ipv6. (for LOG4J2-2650 by Ralph Goers, Mattia Bertorello)

  • AbstractAction.reportException records a warning to the status logger, providing more information when file based appenders fail to compress rolled data asynchronously. (for LOG4J2-2658 by Carter Kozak)

  • AbstractAction handles and records unchecked RuntimeException and Error in addition to IOException. (for LOG4J2-2659 by Carter Kozak)

  • "Values not bound to statement" when using JDBC appender, appender does not respect bufferSize="0". (for LOG4J2-2667 by Gary Gregory, Edith Chui)