The Apache Logging team is pleased to announce the Apache log4j 2.0-beta3 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 fifth release of Log4j 2 and is being made available to encourage use and feedback from the community.

Changes in this version include:

New features:

  • LOG4J2-28: Added PropertiesRewritePolicy and ability to define properties on a Logger.
  • LOG4J2-55: Added ability to configure from an InputSource.

Fixed Bugs:

  • LOG4J2-108: Fix NullPointerException in ClassLoaderContextSelector when no class is returned from
    the SecurityManager.
  • LOG4J2-107: PatternParser was not properly handling adjacent nested options
  • LOG4J2-95: Add support for loading plugins inside the OSGi bundle.
  • LOG4J2-103: The LogEvent was wrapping a ThrowableProxy with another ThrowableProxy when deserializing. Thanks to Das Archive.
  • LOG4J2-104: Convert LogManager binding to use "regular" java properties instead of XML properties to workaround a
    bug in Oracle's xmlparserv2 jar.
  • LOG4J2-102: The Facility value was being improperly calculated. Thanks to Emanuele Colombo.
  • LOG4J2-101: A NullPointerException would occur if no format value was passed to the SyslogAppender. Thanks to Emanuele Colombo.
  • LOG4J2-99: MapRewritePolicy had an extra call to putAll that caused updates to behave like adds. Thanks to Das Archive.
  • Avoid NPE when duplicate LoggerContextFactorys are present. Allow factories to specify a weight to allow
    real implementations to outrank test implementations. Provide a simple default LoggerContextFactory.
  • LOG4J2-97: Added several missing classes and methods for Log4j 1.x compatibility.
  • LOG4J2-94: Interpolator was not stripping Lookup key separator when trying to locate the default value for a variable. Thanks to Denis Treskunov.
  • Log4j 1.2 Category.forcedLog was wrapping the message with an ObjectMessage even if the parameter was an


  • LOG4J2-105: Add ability to customize the names of the Levels in the LevelPatternConverter.
  • LOG4J2-85: Add ThreadContext.push(String format, Object... args)
  • Created combined jar to combine API and Core contents for users who only want the Log4j implementation.
  • LOG4J2-87: Build pdf of user's guide.
  • LOG4J2-29: Added font and fontSize parameters to HTMLLayout. Replace newlines in message with br tag.

Apache Log4j 2.0-beta2 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: