2.2 (2015-02-22)

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

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



  • Specify the SyslogAppender connect timeout value as part of the configuration. The SyslogAppender takes a new parameter connectTimeoutMillis. (for LOG4J2-895 by Gary Gregory)

  • Specify the SocketAppender connect timeout value as part of the configuration. The SyslogAppender takes a new parameter connectTimeoutMillis. (for LOG4J2-899 by Gary Gregory)

  • HTML layout should not use attribute minimalization for hr noshade. (for LOG4J2-933 by Gary Gregory, ppiman)

  • Allow JSON layout to create one compact log record per line. (for LOG4J2-941 by Gary Gregory, Konstantinos Liakos)


  • Update Jackson from 2.4.2 to 2.4.3. (for LOG4J2-881 by Gary Gregory)

  • Update maven-core from 3.1.0 to 3.2.3. (for LOG4J2-882 by Gary Gregory)

  • Update tests from org.apache.felix.framework 4.2.1 to 4.4.1. (for LOG4J2-883 by Gary Gregory)

  • Update org.eclipse.osgi from 3.6.0 to 3.7.1. (for LOG4J2-884 by Gary Gregory)

  • Update Apache Flume from to 1.5.2. (for LOG4J2-900 by Gary Gregory)

  • Update docs for SyslogAppender: "No structured id name was supplied" (for LOG4J2-901 by Gary Gregory, Tihomir Meščić, Siegfried Greisinger)

  • Update Jackson from 2.4.3 to 2.4.4. (for LOG4J2-910 by Gary Gregory)

  • Update from Jackson 2.4.4 to 2.5.0. (for LOG4J2-925 by Gary Gregory)

  • Incorrect attribute name in PropertiesRewritePolicy example. (for LOG4J2-950 by Gary Gregory, Joel Edwards)

  • Documentation: clarify system properties to control status logger, improve troubleshooting FAQ entry. (for LOG4J2-955 by Remko Popma)

  • Update from Jackson 2.5.0 to 2.5.1. (for LOG4J2-958 by Gary Gregory)


  • ThrowableProxy throws NoClassDefFoundError. (for LOG4J2-834 by Gary Gregory, Nikita Koval, Leonard Broman, Thiago Kronig)

  • AbstractLifecycle should not implement equals() and hashCode(). (for LOG4J2-881 by Gary Gregory, Mariano Gonzalez)

  • AbstractLifecycle should not implement equals() and hashCode(). (for LOG4J2-891 by Gary Gregory)

  • JUL adapter does not map Log4j'2 FATAL level to a JUL level. (for LOG4J2-892 by Gary Gregory)

  • NullPointerException on filter when mapping JUL to Log4j2. (for LOG4J2-893 by Gary Gregory)

  • Javadoc for org.apache.log4j.BasicConfigurator.configure() is incorrect. (for LOG4J2-897 by Gary Gregory)

  • ClassLoaderContextSelector uses ClassLoader.toString() as a key (for LOG4J2-903 by Gary Gregory, Mauro Molinari)

  • XML configuration does not report full error message for XInclude parser configuration problems. (for LOG4J2-912 by Gary Gregory)

  • ThrowableProxy.getExtendedStackTraceAsString causes NullPointerException. (for LOG4J2-914 by Gary Gregory, Kaj Bjurman)

  • Logging system fails to initialize if XInclude API is not available. (for LOG4J2-919 by Gary Gregory, David Johle)

  • Log4j 1.2 Bridge doesn’t map level ALL correctly in Category.getEffectiveLevel(). (for LOG4J2-924 by Gary Gregory, Ryan Rupp)

  • ConsoleAppender is missing @PluginFactory annotation at createAppender method. (for LOG4J2-931 by Gary Gregory, Robert Gacki)

  • (JMX) To avoid memory leaks when web applications are restarted, JMX notifications are sent from the caller thread in web applications. For non-web applications notifications are sent from a background thread as before. (for LOG4J2-938 by Remko Popma, Mauro Molinari)

  • Log4j Flume appender is not adding millisecond to the event headers when the event is logged at 000 milliseconds. (for LOG4J2-944 by Gary Gregory, Vinayaka Ramachandra)

  • [docs] Using Log4j 2 in Web Applications: Update example (Log4jWebLifeCycle is not visible). (for LOG4J2-946 by Gary Gregory, artemonster)

  • Manual refers to Route "AppenderRef" attribute, should be "ref". (for LOG4J2-956 by Gary Gregory, David Kellerman)

  • Missing toUpperCase(Locale.ENGLISH). (for LOG4J2-957 by Gary Gregory, Fatih Guleryuz)