
              Apache Log4j 2.7 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.7 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 release contains several bugfixes and new features. The new features include new logging API
modules for Scala 2.10 and 2.11, and support for various non-blocking queue implementations in
AsyncAppender. Furthermore the ThreadContext map can now be configured to be garbage-free, and
users can now inject context data from other sources than ThreadContext. Context data values can
be any Object, not just Strings. 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);

The Log4j 2.7 API, as well as many core components, maintains binary compatibility with previous releases.

GA Release 2.7

Changes in this version include:

New features:
o LOG4J2-1578:  RoutingAppender can be configured with scripts. Add Script in a Routes element. 
o LOG4J2-1597:  Add a ScriptAppenderSelector to create an Appender specified by a Script. 
o LOG4J2-1349:  (GC) Added support for garbage-free ThreadContext map. Disabled by default, users need to enable this explicitly. 
o LOG4J2-1447:  (GC) Changed LogEvent's internal data structure for context data to be garbage-free. Added method LogEvent#getContextData(), deprecated method #getContextMap(). 
o LOG4J2-1010:  Users can now inject context data from other sources than ThreadContext. Values can be any Object, not just Strings. Thanks to Mikael Ståldal. 
o LOG4J2-1568:  Added support for java.util.concurrent.LinkedTransferQueue to AsyncAppender. 
o LOG4J2-1430:  Added optional support for Conversant DisruptorBlockingQueue in AsyncAppender. Thanks to John Cairns. 
o LOG4J2-1439:  Added optional support for JCTools MPSC bounded lock-free queue in AsyncAppender. Thanks to Anthony Maire. 
o LOG4J2-1558:  SocketAppender now supports IO buffering. 
o LOG4J2-1557:  Add a Builder for the SocketAppender (deprecates factory method). 
o LOG4J2-1609:  Add a Builder to ServletAppender and deprecate factory method. 
o LOG4J2-1553:  AbstractManager now implements AutoCloseable. 
o LOG4J2-1528:  Added ability to generate Log4j 2-style XML configuration file from ConfigurationBuilder. 
o LOG4J2-1181:  Added Logging API for Scala 2.10 and 2.11. 
o LOG4J2-1512:  Added options to exclude stack trace from JSON, XML and YAML layouts. 
o LOG4J2-1539:  Added Core API Configurator.shutdown(LoggerContext, long, TimeUnit). 
o LOG4J2-1501:  FileAppender is now able to create files on-demand. 
o LOG4J2-1504:  RollingFileAppender is now able to create files on-demand. 
o LOG4J2-1471:  [PatternLayout] Add an ANSI option to %xThrowable. 
o LOG4J2-1472:  org.apache.logging.log4j.core.LoggerContext now implements Closeable. 
o LOG4J2-1458:  [PatternLayout] Add an ANSI option to %message. 
o LOG4J2-1505:  Create a Builder for the FileAppender plugin to facilitate adding attributes in the future. 
o LOG4J2-1507:  Allow Builders to be completely generic. 
o LOG4J2-1508:  Allow a Builder to subclass another Builder. 
o LOG4J2-1516:  Add ThreadContextMap2 interface supporting method putAll(Map<String, String>). Thanks to Gary Gregory. 
o LOG4J2-1519:  Add ThreadContext.putAll(Map<String, String>). 
o LOG4J2-1520:  Add JUnit Rule implementations to manage the thread context. 
o LOG4J2-1547:  The Core AbstractConfiguration now tracks its LoggerContext and add Configuration.getLoggerContext(). 
o LOG4J2-1540:  The Core AbstractManager now tracks its LoggerContext. 
o LOG4J2-1577:  Add a Builder to the RoutingAppender and deprecate factory method. 

Fixed Bugs:
o LOG4J2-1618:  Fixed ClassCastException when using JUL logging during shutdown. Thanks to Raman Gupta. 
o LOG4J2-1620:  2.7-rc1: RollingFileAppender immediateFlush default value should be true, not false. Thanks to Sascha Scholz. 
o LOG4J2-1611:  Improved performance of context data injector for web applications to be on par with standalone applications. 
o LOG4J2-1591:  Introduced new interface LifeCycle2 with stop(long,TimeUnit) method to avoid breaking backwards compatibility with new Configurator.shutdown(LoggerContext, long, TimeUnit) API. 
o LOG4J2-1590:  Fixed issue with filters extending AbstractFilter that did not override methods with unrolled varargs. 
o LOG4J2-1583:  Fixed scrambled log messages triggered by nested logging from toString() method of a logging parameter object. Thanks to Larry West. 
o LOG4J2-1259:  Log4j threads are no longer leaking on Tomcat shutdown. Thanks to Misagh Moayyed, Steffen Offermann. 
o LOG4J2-1051:  When starting on Google App Engine, Interpolator now suppresses the NoClassDefFoundError stack trace  for the jvmrunargs lookup. Thanks to Lukasz Lenart. 
o LOG4J2-1582:  When initializing on platforms where JMX is not available, Interpolator component no longer prints stack trace for warning messages. 
o LOG4J2-1581:  Unregistering JMX components no longer prints a stack trace when the MBean has already been unregistered. 
o LOG4J2-1313:  Support Property values to be specified in configuration as a value attribute as well as an element. Thanks to Philipp Knobel, Leon Finker. 
o LOG4J2-1575:  (GC) LoggerConfig now stores configuration properties in a List, not a Map to prevent creating temporary Iterator objects. Added method LoggerConfig#getPropertyList(), deprecated method #getProperties(). 
o LOG4J2-1457:  Fixed class loader deadlock when using async logging and extended stack trace pattern. Thanks to Leon Finker. 
o LOG4J2-1563:  Fix to prevent Log4j 2.6.2 and higher from losing exceptions when a security manager is present. Thanks to Jason Tedor. 
o LOG4J2-1530:  Fixed issue where LogEvent.getContextStack() returned null. 
o LOG4J2-1518:  Prevent deadlock in Async Loggers when queue is full and logged Object's toString() logs another message. Thanks to Leon Finker. 
o LOG4J2-1542:  Prevent ArrayIndexOutOfBoundsException in ParameterizedMessage.formatTo for single-char or empty messages. Thanks to Rogério Lecarião Leite. 
o LOG4J2-1549:  Fixed issue where AsyncLoggerContextSelector+PropertiesConfigurationBuilder defaulted to includeLocation=true. Thanks to Jason Bedard. 
o LOG4J2-1562:  Prevent SocketAppender memory usage from growing unbounded if it cannot connect to a server. 
o LOG4J2-1559:  Prevent NPE in Level.isInRange. Thanks to Andrey Plotkin. 
o LOG4J2-1511:  DynamicThresholdFilter filtered incorrectly when params were passed as individual arguments instead of varargs. Thanks to Srikanth Surukuntu. 
o LOG4J2-1548:  [CronTriggeringPolicy] ConfigurationScheduler scheduled the task infinitely after first fire. 
o LOG4J2-1506:  Log4j should not unregister JMX MBeans when log4j2.disable.jmx property is true. Thanks to Johannes Schleger. 
o LOG4J2-1490:  Log4j2 should postpone creating log file until the appender actually receives an event. Thanks to Krzysztof Taborski. 
o LOG4J2-1320:  Support loading custom plugins from jar files and directories whose classpath entries use the "vfs" URL protocol. Thanks to Paresh Varke, Pierrick Hymbert. 
o LOG4J2-1541:  Fix file handle resource leak in XmlConfiguration.XmlConfiguration(ConfigurationSource). 
o LOG4J2-1538:  Prevent NPE when dynamically removing filters. Thanks to Igor Karpov. 
o LOG4J2-1532:  Attributes were not merged properly in composite configurations. 
o LOG4J2-1529:  Attributes were not merged properly in composite configurations. Thanks to Sridevi Narra. 
o LOG4J2-1527:  Prevent NPE in RingBufferLogEvent.getFormattedMessage() when used in web applications. Thanks to Jose Leon. 
o LOG4J2-905:  Added ability to disable (date) lookup completely for compatibility with other libraries like Camel. Thanks to Moritz Löser. 
o LOG4J2-1526:  Added support for setting StatusLogger destination in ConfigurationBuilder. 
o LOG4J2-1448:  Allow comma separated agents, host list to be passed to FlumeAppender. Thanks to Keith Laban. 
o LOG4J2-1500:  Merging configurations failed with an NPE when comparing Nodes with different attributes. Thanks to Jose Leon. 
o LOG4J2-1482:  Fixed improper header in CsvParameterLayout. Thanks to Sumit Singhal. 
o LOG4J2-1199:  Documented that JVM Input Arguments Lookup (JMX) is not available on Google App Engine. 
o LOG4J2-1438:  (GC) Added method getParameter() to ObjectMessage (and ReusableObjectMessage). 
o LOG4J2-1488:  (GC) Fixed ISO8601 %date conversion pattern with a period '.' separator for milliseconds is now garbage free. Thanks to Richard Zschech. 
o LOG4J2-1489:  (GC) Fixed %date conversion patterns with a timezone parameter are now garbage free. Thanks to Richard Zschech. 
o LOG4J2-1279:  Prevent NullPointerException in FastDateParser$TimeZoneStrategy. Thanks to Tony Baines. 
o LOG4J2-1341:  (GC) HighlightConverter and StyleConverter are now GC-free. Thanks to Richard Zschech. 
o LOG4J2-1467:  [OSGi] Fixed missing import package. Thanks to Ralf, Gary Gregory. 
o LOG4J2-351:  [OSGi] Fixed wrong Fragment-Host in manifest files. Thanks to Roland Weiglhofer. 
o LOG4J2-1313:  Properties declared in configuration can now have their value either in the element body or in an attribute named "value". Thanks to Philipp Knobel. 
o LOG4J2-1235:  org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy was not working correctly. Thanks to Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky. 
o LOG4J2-1502:  Fixed issue where CsvParameterLayout and CsvLogEventLayout inserted NUL characters if data starts with {, (, [ or " Thanks to Sumit Singhal. 
o LOG4J2-1573:  Layout is no longer optional. Thanks to Steffen Offermann. 
o LOG4J2-1608:  ServletAppender does not provide throwable object to ServletContext. 
o LOG4J2-1599:  Prevent potential NPE in org.apache.logging.log4j.message.ParameterFormatter.formatMessage3(StringBuilder, char[], int, Object[], int, int[]). 
o LOG4J2-1600:  Prevent potential NPE due to org.apache.logging.log4j.core.layout.MarkerPatternSelector.createSelector(PatternMatch[], String, boolean, boolean, Configuration). 
o LOG4J2-1601:  Prevent potential NPE due to org.apache.logging.log4j.core.layout.ScriptPatternSelector.createSelector(AbstractScript, PatternMatch[], String, boolean, boolean, Configuration). 
o LOG4J2-1602:  Prevent potential NPE in org.apache.logging.log4j.core.util.datetime.FormatCache.MultipartKey.equals(Object) when object is null. 
o LOG4J2-1603:  Redo hashCode() and equals() methods in org.apache.logging.log4j.core.net.ssl classes. 
o LOG4J2-1610:  Add targetNamespace to log4j-config.xsd. GitHub #43. Thanks to Shubhankar. 
o LOG4J2-1619:  new Log4jLogEvent().toString() throws an NPE. 

Changes:
o LOG4J2-1604:  Log4j2 TcpSocketServer in background. Thanks to Colin Hillman. 
o LOG4J2-1574:  Allow the RollingFileAppender to use default pattern layout. 
o LOG4J2-1556:  Custom Log4j threads now extend Log4jThread. 
o LOG4J2-1605:  Improve error messages for TcpSocketServer and UdpSocketServer. 
o LOG4J2-1458:  Updated Jackson from 2.7.5 to 2.8.0. 
o LOG4J2-1494:  Updated Jackson from 2.8.0 to 2.8.1. 
o LOG4J2-1569:  Updated Jackson from 2.8.1 to 2.8.2. 
o LOG4J2-1598:  Updated Jackson from 2.8.2 to 2.8.3. 
o LOG4J2-1495:  Updated LMAX Disruptor from 3.3.4 to 3.3.5. 
o LOG4J2-1496:  Updated Kafka client from 0.9.1.0 to 0.10.0.0. 
o LOG4J2-1533:  Updated Kafka client from 0.10.0.0 to 0.10.0.1. 
o LOG4J2-1487:  Updated JMS test from ActiveMQ 5.13.3 to 5.13.4. 
o LOG4J2-1551:  Updated JMS test from ActiveMQ 5.13.4 to 5.14.0. 
o LOG4J2-1543:  Removed deprecated Core API org.apache.logging.log4j.core.util.Constants.UTF_8. 
o LOG4J2-1544:  Removed deprecated Core API org.apache.logging.log4j.core.util.Assert.requireNonNull(T, String). 
o LOG4J2-1545:  Removed deprecated Web API org.apache.logging.log4j.web.WebLookup.getServletContext(). 


Apache Log4j 2.7 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/