
              Apache Log4j 2.0 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.0 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
architecture.

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

GA Release

Changes in this version include:

New features:
o LOG4J2-519:  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. 
o LOG4J2-696:  RegexFilter does not match multiline log messages. 

Fixed Bugs:
o LOG4J2-705:  Fixed issue where Async Logger does not log thread context stack data.
        API change: added method getImmutableStackOrNull() to ThreadContext.ContextStack interface. 
o LOG4J2-631:  Update docs to clarify how to use formatter logger and standard logger together. 
o LOG4J2-441:  LoggerConfigs with no Level now inherit the Level from their parent. 
o LOG4J2-703:  Android: Could not find class 'javax.naming.InitialContext', referenced from method org.apache.logging.log4j.core.lookup.JndiLookup.lookup. Thanks to Nelson Melina. 
o LOG4J2-699:  PatternLayout manual page missing documentation on header/footer. 
o LOG4J2-625:  Fixed Serialization error with SocketAppender and Async Loggers.
        (Fixed in RC2, but wasn't included in release notes.) 
o LOG4J2-538:  JMX GUI: fixed occasional ArrayIndexOutOfBoundsException after pressing "reconfigure with XML below".
        (Fixed in RC2, but wasn't included in release notes.) 
o LOG4J2-666:  AsyncLoggerContextSelector should ensure that different AsyncLoggerContext objects created by web app classloaders have unique names. 
o LOG4J2-683:  Fix annotation processor warnings on JDK 1.7+. Thanks to Jurriaan Mous. 
o LOG4J2-694:  Fix strange compilation error that popped up in a test class. 
o LOG4J2-692:  Update documentation to specify only Maven 3 is supported. 
o LOG4J2-690:  Log4j Web test dependencies should be in scope "test" in the pom. Thanks to Philip Helger. 
o LOG4J2-682:  Special characters (tab and so on) in PatternLayout do not work. Thanks to Scott Harrington. 
o LOG4J2-686:  Core's OptionConverter support for \b is broken (affects PatternLayout). 
o LOG4J2-687:  Rename org.apache.logging.log4j.core.util.Closer.closeSilent() to closeSilently(). 
o LOG4J2-688:  Make org.apache.logging.log4j.core.layout.PatternLayout immutable. 
o LOG4J2-707:  Some exceptions are not logged when configuration problems are detected. 

Changes:
o LOG4J2-685:  Make org.apache.logging.log4j.core.layout.AbstractLayout immutable. 
o LOG4J2-689:  Update Jackson to 2.4.1. 
o LOG4J2-709:  Update Apache Commons Logging to 1.2 from 1.1.3. 


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 Apache Log4j 2 website:

http://logging.apache.org/log4j/2.x/


