The Apache Logging team is pleased to announce the Apache log4j 2.0-beta1 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 of the improvements available in Logback while fixing some inherent problems in Logback's

This is the third release of Log4j 2 and is being made available to encourage use and feedback from the community.

Bug fixes and enhancements

Changes in this version include:

New features:

  • Added AsynchAppender

Fixed Bugs:

  • LOG4J-81: PatternLayout was not honoring format modifiers.
  • Created web module to allow web applications to include the Log4j context listener in WEB-INF/lib even if
    Log4j is in the container's class path. Allow locating the LoggerContext to include the ClassLoader. Updated
    the Loader utility to always choose the child ClassLoader. Verified in Jboss 5 and Tomcat.
  • LOG4J2-82: MarkerFilter called MarkerManager.getMarker causing the Marker to be created during the processing of the
    configuration. This prevents the application from creating the Marker with any parents. MarkerWrapper in
    SLF4J-impl was getting a ClassCastException in instanceOf because the Marker isn't a MarkerWrapper.
  • LOG4J2-80: Allow Log4j 2 to be used as the implementation with SLF4J and SLF4J's jcl-over-slf4j by adding filtering
    to the log method in SLF4JLogger. Thanks to Oliver Lamy.
  • LOG4J2-78: LogFactoryImpl.setAttribute in the Commons Logging bridge got a NullPointerException when passed a null value.
    It will now remove the attribute.
  • LOG4J2-77: RoutingAppender was calling the stop method for each of its referenced Appenders and was calling
    the stop method of the default Appender a second time. It will now only call the stop method of
    Appenders it creates.
  • LOG4J2-76: RewriteAppender was calling the stop method of the referenced appender causing the referenced appender's
    manager to have its use count decremented too many times.
  • LOG4J2-74: Logger.error(Marker, Message, Throwable) was internally using Level.TRACE.
  • LOG4J2-75: Enhanced Log4jContextListener to accept a configuration file location. Modified FileConfigurationMonitor
    to monitor files configured that way. Fixed other reconfiguration related bugs. Tested in JBoss and
  • LOG4J2-72: NullPointerException in RollingFileManager when filePattern does not cause the file to be compressed.
  • LOG4J2-71: FileRenameAction did not create the parent directories of the archive files causing the rollover to fail.


  • Update the versions of SLF4J and Logback.

Apache Log4j 2.0-beta1 requires a minimum of Java 5 to build and run. Basic compatibility with
Log4j 1.x is provided through the log4j12-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 Apache Log4j 2 website: