2.0 (2014-07-12)

This is the first GA release, after thirteen prior releases over the last 4 years.

Apache Log4j 2.0 requires a minimum of Java 6 to build and run. 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.



  • Added support for generating custom logger wrappers that replace the existing log levels and extended logger wrappers that add custom log levels to the existing ones. (for LOG4J2-519 by Remko Popma)

  • RegexFilter does not match multiline log messages. (for LOG4J2-696 by Gary Gregory)


  • Make org.apache.logging.log4j.core.layout.AbstractLayout immutable. (for LOG4J2-685 by Gary Gregory)

  • Update Jackson to 2.4.1. (for LOG4J2-689 by Gary Gregory)

  • Update Apache Commons Logging to 1.2 from 1.1.3. (for LOG4J2-709 by Gary Gregory)


  • LoggerConfigs with no Level now inherit the Level from their parent. (for LOG4J2-441 by Ralph Goers)

  • JMX GUI: fixed occasional ArrayIndexOutOfBoundsException after pressing "reconfigure with XML below". (Fixed in RC2, but wasn’t included in release notes.) (for LOG4J2-538 by Remko Popma)

  • Fixed Serialization error with SocketAppender and Async Loggers. (Fixed in RC2, but wasn’t included in release notes.) (for LOG4J2-625 by Remko Popma)

  • Update docs to clarify how to use formatter logger and standard logger together. (for LOG4J2-631 by Remko Popma)

  • AsyncLoggerContextSelector should ensure that different AsyncLoggerContext objects created by web app classloaders have unique names. (for LOG4J2-666 by Remko Popma)

  • Special characters (tab and so on) in PatternLayout do not work. (for LOG4J2-682 by Gary Gregory, Scott Harrington)

  • Fix annotation processor warnings on JDK 1.7+. (for LOG4J2-683 by Matt Sicker, Jurriaan Mous)

  • Core’s OptionConverter support for \b is broken (affects PatternLayout). (for LOG4J2-686 by Gary Gregory)

  • Rename org.apache.logging.log4j.core.util.Closer.closeSilent() to closeSilently(). (for LOG4J2-687 by Gary Gregory)

  • Make org.apache.logging.log4j.core.layout.PatternLayout immutable. (for LOG4J2-688 by Gary Gregory)

  • Log4j Web test dependencies should be in scope "test" in the pom. (for LOG4J2-690 by Ralph Goers, Philip Helger)

  • Update documentation to specify only Maven 3 is supported. (for LOG4J2-692 by Ralph Goers)

  • Fix strange compilation error that popped up in a test class. (for LOG4J2-694 by Matt Sicker)

  • PatternLayout manual page missing documentation on header/footer. (for LOG4J2-699 by Remko Popma)

  • Fixed issue where Async Logger does not log thread context stack data. API change: added method getImmutableStackOrNull() to ThreadContext.ContextStack interface. (for LOG4J2-705 by Remko Popma)

  • Some exceptions are not logged when configuration problems are detected. (for LOG4J2-707 by Gary Gregory)