
              Apache Log4j 2.6 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.6 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, property substitution using Lookups, multiple patterns on
a PatternLayout and asynchronous Loggers. In addition, Log4j 2 will not lose events while reconfiguring.

This is the tenth GA release. It contains several bugfixes and new features. The new features include
the ability to be "garbage-free" (avoid allocating temporary objects) while logging if certain conditions are met,
a new YAML Layout, the ability to merge configuration files, and documenting Log4j's performance against other logging
frameworks and in various logging configurations. More details on the features and bugfixes are itemized below.

GA Release 2.6

Changes in this version include:

New features:
o LOG4J2-1270:  (GC) Added support for garbage-free logging in steady state.
        This includes Async Loggers and logging synchronously to the console and to a file,
        but does not include the AsyncAppender. This release makes the GelfLayout and
        the main patterns in the PatternLayout garbage-free. 
o LOG4J2-1297:  (GC) Added manual page on garbage-free logging. 
o LOG4J2-1373:  (GC) Update Logger wrapper Generator tool to generate methods for the new Logger methods. 
o LOG4J2-1326:  (GC) Added methods to the Logger interface for logging CharSequence messages. 
o LOG4J2-1344:  (GC) FileAppender, RollingFileAppender and MemoryMappedFileAppender are now also garbage-free by default. 
o LOG4J2-1278:  (GC) Added unrolled varargs methods to Logger API, added Unbox utility to avoid auto-boxing when logging primitive values. 
o LOG4J2-1271:  (GC) Add MessageFactory that avoid allocation by reusing a cached ParameterizedMessage instance. 
o LOG4J2-1293:  (GC) Add interface StringBuilderFormattable to enable converting Messages and parameters to text without allocating temporary objects.
        ParameterizedMessage, ObjectMessage, SimpleMessage and ThreadDumpMessage now implement StringBuilderFormattable. 
o LOG4J2-1274:  (GC) Add encode(LogEvent, ByteBufferDestination) method to Layout API to enable converting LogEvents to bytes without creating temporary objects. 
o LOG4J2-1362:  Added a YAML layout. Thanks to Gary Gregory. 
o LOG4J2-1179:  Documented benchmark results comparing Log4j 2 performance to other logging libraries. 
o LOG4J2-1011:  Document dependencies for layouts. 
o LOG4J2-621:  Pattern to drop first N package parts. Thanks to Lee Theobald, Kamal Mettananda, Gary Gregory. 
o LOG4J2-494:  Support merging configurations to for a composite configuration. Thanks to Philipp Knobel. 
o LOG4J2-1357:  Option to not log stack traces for logged Throwables in GelfLayout. 
o LOG4J2-1348:  Add an AutoCloseable ThreadContext class: CloseableThreadContext. Thanks to Greg Thomas, Gary Gregory. 
o LOG4J2-1299:  Add pattern converter for thread id and priority in PatternLayout. 
o LOG4J2-124:  Add shutdown methods to LogManager. 
o LOG4J2-1221:  Added async logger Timeout wait strategy and made this the default wait strategy for async loggers.
        This prevents a rare deadlock that may occur on Solaris. Thanks to Michael Barker. 
o LOG4J2-1080:  Added option to discard events below a certain log level if the async logger ring buffer
        or async appender queue is full. 
o LOG4J2-1237:  Make PatternLayout header and footer accept a pattern. Thanks to Mike Calmus, Gary Gregory. 
o LOG4J2-1244:  Make header and footer values customizable in JSONLayout. Thanks to Anshu Garg, Remko Popma, Gary Gregory. 
o LOG4J2-1245:  Make CSV Layout header and footers accept patterns. 
o LOG4J2-1192:  Dynamic Subject for SMTP Appender. Thanks to Jörg Bretschneider, Gary Gregory. 
o LOG4J2-1277:  FormattedMessage, MessageFormatMessage and StringFormattedMessage should support passing in a Locale to ensure appropriate formatting. Thanks to Gary Gregory, Ludovic Hochet. 
o LOG4J2-1303:  Add documentation links to runtime dependencies in each component intro page. 
o LOG4J2-1252:  JeroMqAppender should support layouts. 
o LOG4J2-1217:  PatternLayout option to limit length of text. Thanks to Thies Wellpott. 
o LOG4J2-1133:  Add JNDI lookup documentation. 
o LOG4J2-1169:  PatternLayout: Possible variable substitution in equals substitution parameter. Thanks to Gerald Kritzinger. 

Fixed Bugs:
o LOG4J2-1281:  (GC) LoggerConfig.getProperties() should not allocate on each call. 
o LOG4J2-1269:  (GC) AsyncLogger should use thread-local translator by default. 
o LOG4J2-623:  Generate MDC properties as a JSON map in JSONLayout, with option to output as list of map entries. 
o LOG4J2-1387:  Fixed memory leak related to shutdown hook. 
o LOG4J2-1382:  Copying a MutableLogEvent using Log4jLogEvent.Builder should not unnecessarily obtain caller location information. 
o LOG4J2-1372:  XMLLayout indents, but not the first child tag (Event). Thanks to Kamal Mettananda, Gary Gregory. 
o LOG4J2-1363:  Properties Configuration did not support includeLocation attribute on Loggers. 
o LOG4J2-1263:  The ConfigurationSource was not saved for BuiltConfigurations so monitor interval had no effect. 
o LOG4J2-1369:  "xz" compression results in plaintext, uncompressed files. Thanks to Alex Birch, Gary Gregory. 
o LOG4J2-1368:  (Log4j-internal) StatusLogger dropped exceptions when logging parameterized messages. 
o LOG4J2-1336:  LoggerFactory in 1.2 API module is not compatible with 1.2. Thanks to Zbynek Vyskovsky. 
o LOG4J2-1354:  No configuration reload is triggered under Windows when replacing the configuration file with one that has older last modified date. Thanks to Arkadiusz Adolph. 
o LOG4J2-1346:  Exception from Log4jServletContextListener prevents jetty-maven-plugin run-forked. 
o LOG4J2-1339:  (Perf) AsyncLogger performance optimization: avoid calling instanceof TimestampMessage in hot path. 
o LOG4J2-1324:  Improve error handling in the Async Logger background thread: the new default exception handler no longer rethrows the error. 
o LOG4J2-1309:  Configuration file error does not show cause exception. 
o LOG4J2-1289:  Change flow logging text from "entry' to "Enter" and "exit" to "Exit". 
o LOG4J2-1284:  Made default MessageFactory configurable. 
o LOG4J2-1280:  Deprecate org.apache.logging.log4j.util.MessageSupplier. 
o LOG4J2-1280:  Logger methods taking Supplier parameters now correctly handle cases where the supplied value is a Message. 
o LOG4J2-1268:  FixedDateFormat was incorrect for formats having MMM with the French locale. 
o LOG4J2-1222:  Creation of a LoggerContext will fail if shutdown is in progress. LogManager will default to SimpleLogger instead. 
o LOG4J2-1260:  TlsSyslogFrame calculates message length incorrectly. Thanks to Blake Day, Gary Gregory. 
o LOG4J2-1258:  Async DynamicThresholdFilter does not use the log event's context map. Thanks to Francis Lalonde. 
o LOG4J2-1232:  Incorrect log rotation in last week of year. Thanks to Nikolai. 
o LOG4J2-1248:  Fixed broken nanotime in pattern layout. 
o LOG4J2-908:  JSONLayout doesn't add a comma between log events. Thanks to Konstantinos Liakos, Patrick Flaherty, Robin Coe, Gary Gregory. 
o LOG4J2-1230:  Don't concatenate SYSLOG Messages. Thanks to Vladimir Hudec, Ralph Goers, Gary Gregory. 
o LOG4J2-1238:  org.apache.logging.log4j.core.net.TcpSocketManager and other classes does not report internal exceptions to the status logger. 
o LOG4J2-1212:  Fix documentation to specify the correct default wait strategy used by async loggers. 
o LOG4J2-1215:  Documentation/XSD inconsistencies. Thanks to Erik Kemperman. 
o LOG4J2-1276:  LoggerMessageSupplierTest and LoggerSupplierTest are Locale sensitive. Thanks to Ludovic Hochet. 
o LOG4J2-1251:  Fix JUL bridge issue where LogRecord.getParameters() is used when null. Thanks to Romain Manni-Bucau. 
o LOG4J2-1254:  Fix typo in Flow Tracing documentation. Thanks to Josh Trow. 
o LOG4J2-920:  ClassNotFoundException for BundleContextSelector when initialising in an OSGi environment. Thanks to Ludovic Hochet. 
o LOG4J2-1275:  Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing. Thanks to Ludovic Hochet. 
o LOG4J2-1262:  Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed(). 
o LOG4J2-1227:  NullPointerException in MapLookup.lookup if the event is null. Thanks to Olivier Lemasle. 
o LOG4J2-1050:  Add a Log4jLookup class to help write log files relative to log4j2.xml. Thanks to Adam Retter. 
o LOG4J2-1310:  JndiLookup mindlessly casts to String and should use String.valueOf(). 
o LOG4J2-248:  Log4jWebInitializerImpl: Use Thread instead of Class for fallback classloader. 
o LOG4J2-1330:  Fix NoClassDefFoundError in ReflectionUtil on Google App Engine. 

Changes:
o LOG4J2-1356:  (GC) GelfLayout does now support garabage-free logging (with compressionType=OFF). 
o LOG4J2-1343:  (GC) ConsoleAppender is now garbage-free by default. This logic is reusable for all AbstractOutputStreamAppender subclasses. 
o LOG4J2-1318:  (GC) Avoid allocating unnecessary temporary objects in LoggerContext's getLogger methods. 
o LOG4J2-1333:  (GC) Avoid allocating unnecessary temporary objects in MarkerManager's getMarker methods. 
o LOG4J2-1321:  (GC) Avoid allocating unnecessary temporary objects in PatternLayout's NamePatternConverter and ClassNamePatternConverter. 
o LOG4J2-1271:  (GC) ParameterizedMessage optimizations to avoid or at least postpone allocating temporary objects. 
o LOG4J2-1283:  (GC) Provide ThreadLocal-based gc-free caching mechanism in DatePatternConverter for non-webapps. 
o LOG4J2-1291:  (GC) Update PatternLayout to utilize gc-free mechanism for LogEvent processing. 
o LOG4J2-1292:  (GC) Update RandomAccessFileAppender and RollingRandomAccessFileAppender to utilize gc-free Layout.encode() method. 
o LOG4J2-1272:  (GC) Improve LoggerConfig's data structure for AppenderControl objects to avoid allocating temporary objects during
        traversal for each log event. 
o LOG4J2-1375:  Update SLF4J from 1.7.13 to 1.7.21. 
o LOG4J2-1374:  Migrate tests from Logback 1.1.3 to 1.1.7. 
o LOG4J2-1384:  Update Apache Commons CSV from 1.2 to 1.3. 
o LOG4J2-1365:  (Log4j-internal) Provide message text as CharSequence for some message types to optimize some layouts. 
o LOG4J2-1345:  (Doc) Clarify documentation for properties that control Log4j behaviour. 
o LOG4J2-1255:  Add enhanced entry and exit methods. 
o LOG4J2-1380:  Update Jackson from 2.7.3 to 2.7.4. 
o LOG4J2-1304:  Update Jackson from 2.7.0 to 2.7.2. 
o LOG4J2-1253:  Update LMAX Disruptor from 3.3.2 to 3.3.4. 
o LOG4J2-1219:  Update SLF4J from 1.7.12 to 1.7.13. 
o LOG4J2-1239:  Update Jackson from 2.6.3 to 2.6.4. 
o LOG4J2-1249:  Update Jackson from 2.6.4 to 2.7.0. 
o LOG4J2-1351:  Update Jackson from 2.7.2 to 2.7.3. 
o LOG4J2-1240:  Update Liquibase from 3.3.5 to 3.4.2. 
o LOG4J2-1294:  Update Kafka client from 0.9.0.0 to 0.9.0.1. 
o LOG4J2-1352:  Update javax.mail from 1.5.4 to 1.5.5. 
o LOG4J2-1358:  Update Apache Commons Compress from 1.10 to 1.11. 
o LOG4J2-1388:  Update Google java-allocation-instrumenter from 3.0 to 3.0.1. 
o LOG4J2-1233:  Misleading Value In Properties Example. Thanks to Bahri Gencsoy. 
o LOG4J2-1300:  Remove serializability from classes that don't need it. 
o LOG4J2-1306:  JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks. 
o LOG4J2-1308:  Remove need to pre-specify appender et al. identifiers in property file config format. 
o LOG4J2-1206:  org.apache.logging.log4j.core.LoggerContext#updateLoggers should call firePropertyChangeEvent. 
o LOG4J2-1322:  Update Log4j 1.x migration guide to include information about system property lookup syntax changes. 


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