
              Apache Log4j 2.6.2 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.6.2 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 other modern features such as support for Markers, lambda expressions for lazy logging,
property substitution using Lookups, multiple patterns on a PatternLayout and asynchronous
Loggers. Another notable Log4j 2 feature is the ability to be "garbage-free" (avoid allocating
temporary objects) while logging. In addition, Log4j 2 will not lose events while reconfiguring.

This is the twelfth GA release. It is primarily a bugfix release. More details on the
fixes are itemized below.

Note that subsequent to the 2.6 release a minor source incompatibility was found due to the
addition of new methods to the Logger interface. If you have code that does:

logger.error(null, “This is the log message”, throwable);

or similar with any log level you will get a compiler error saying the reference is ambiguous.
To correct this either do:

logger.error(“This is the log message”, throwable);

or

logger.error((Marker) null, “This is the log message”, throwable);

Log4j 2.6.2 maintains binary compatibility with previous releases.

GA Release 2.6.2

Changes in this version include:

New features:
o LOG4J2-1395:  Add "direct" option to ConsoleAppender for increased performance. 
o LOG4J2-1437:  (GC) ObjectMessage and ReusableObjectMessage now avoid calling toString() on auto-boxed primitive parameters. 
o LOG4J2-1415:  (GC) ParameterFormatter now avoids calling toString() on auto-boxed primitive message parameters. 
o LOG4J2-1412:  Unbox utility's ringbuffer of StringBuilders is now configurable. 

Fixed Bugs:
o LOG4J2-1414:  Fixed minor issues with the 2.6.1 web site. Thanks to Ralph Goers. 
o LOG4J2-1434:  Ensure that the thread-local StringBuilders used by Layouts to format log events to text will not
        retain excessive memory after a large message was logged. Thanks to Luke Butters. 
o LOG4J2-1418:  Provide MessageFactory2 to custom Logger implementations. 
o LOG4J2-1420:  RollingRandomAccessFileManager was not properly rolling over on startup and was getting a NullPointerException. 
o LOG4J2-1417:  Fixed issue where Unbox utility ignored the value Constants.ENABLE_THREADLOCALS and always stored non-JDK classes in ThreadLocals. 
o LOG4J2-1422:  Fixed issue where AsyncAppenderQueueFullPolicyTest sometimes hangs. 
o LOG4J2-1445:  OnStartupTriggeringPolicyTest fails on Windows saying the file is used by another process. Thanks to Ludovic HOCHET. 

Changes:
o LOG4J2-1432:  Update Jackson from 2.7.4 to 2.7.5. 
o LOG4J2-1433:  Update Jansi from 1.11 to 1.13. 
o LOG4J2-1444:  Update Apache Commons Compress from 1.11 to 1.12. 


Apache Log4j 2.6.2 requires a minimum of Java 7 to build and run. Log4j 2.3 was the last release that
supported Java 6.

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/