The Apache Log4j 2 team is pleased to announce the Log4j 2.5 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 ninth GA release. It contains several bugfixes and new features. 
The new features include
the ability to specify delete actions during file rollover, a CRON-based 
triggering policy for file rollover,
Support for JSR 223 scripts in filters, pattern selectors and delete actions, 
and a policy for removing
idle appenders from the RoutingAppender. More details on the features and 
bugfixes are itemized below.

Log4j 2 requires a minimum of Java 7.

GA Release 2.5

Changes in this version include:

New features:
o LOG4J2-435:  Added support for custom delete actions triggered by a rollover. 
Thanks to Robert Schaft.
o LOG4J2-89:  Allow rollover to occur at any time. Add CronTriggeringPolicy.
o LOG4J2-1136:  Add support for JSR 223 scripts in filters and the 
PatternSelector.
o LOG4J2-1168:  Add getters for source and destination file in file rename 
action. Thanks to Steven Swor.
o LOG4J2-1175:  Add getters for classes in 
org.apache.logging.log4j.core.appender.rolling.action.
o LOG4J2-898:  Added system property to allow users to control whether messages 
should be formatted in the background.
o LOG4J2-1178:  Support use-case for JDBC's 
CommonDataSource.setLogWriter(PrintWriter) and 
java.sql.DriverManager.setLogWriter(PrintWriter).
o LOG4J2-1187:  Support use case for 
java.sql.DriverManager.setLogStream(PrintStream).

Fixed Bugs:
o LOG4J2-324:  Reduced memory usage of status messages in bounded queue; 
support zero-length queue that stores no messages.
o LOG4J2-1173:  Fixed rollover error when copying to a directory mapped to a 
remote Linux host.
o LOG4J2-1195:  Make KafkaAppender support SerializedLayout. Thanks to Melvin 
Du.
o LOG4J2-381:  Allow triggering policy and rollover strategy to be modified 
during reconfiguration. Thanks to Anthony Baldocchi.
o LOG4J2-1029:  Performance improvement when gathering location information. 
Thanks to Stefan Leonhartsberger.
o LOG4J2-1172:  Fixed ThreadLocal leak [AsyncLogger$Info] on Tomcat when using 
AsyncLoggerContextSelector.
o LOG4J2-1176:  Fixed memory leak when log4j jars are in Tomcat's lib folder.
o LOG4J2-1180:  Logger cache does not account for message factory. Thanks to 
Mikael Ståldal.
o LOG4J2-879:  Documentation: fixed minor issues with the site and manual pages.
o LOG4J2-999:  RollingFileAppender should also roll over when log event time is 
equal to rollover time, not only when later. Thanks to Joan Balagueró.
o LOG4J2-873:  Fixed bug where omitting the <display-name> element in web.xml 
caused incorrect log4j initialization,
        resulting in memory leaks when the web application was stopped or 
reloaded. Thanks to Martin Dickins, LC, Luke Woodward.
o LOG4J2-323:  Better web app support for async loggers: Fixed a memory leak 
that occurred when the logging jars are placed
        in the container's classpath and the configuration file uses 
AsyncRoot/AsyncLogger.
        The problem was that the first web application started the Disruptor 
background thread [AsyncLoggerConfig-1] but did not stop it until all web apps 
are stopped.
        Each web application now has its own Disruptor which is stopped/started 
together with the web app.
o LOG4J2-493:  Better web app support for async loggers: it is now possible to 
place the logging jars in the container's
        classpath when making all loggers asynchronous by using 
AsyncLoggerContextSelector. This fixes a problem where
        logging would stop working after stopping and restarting a web 
application.
o LOG4J2-1171:  Use servlet context name for logger context name when available.
o LOG4J2-1159:  Fixed a ThreadLocal memory leak in Tomcat8 that mentions 
AsyncLoggers when Async Loggers are not used.
o LOG4J2-1166:  AbstractConfiguration executor should use a DaemonThreadFactory.
o LOG4J2-1165:  Improve Log4j initialization status messages.
o LOG4J2-1156:  Web site corrections and updates.
o LOG4J2-1158:  Log4J JUL adapter is using MessageFormat on String passed by 
java.util.function.Supplier<String>. Thanks to Michael Fortin, Gary Gregory.
o LOG4J2-801:  org.apache.logging.log4j.core.Logger should be serializable.
o LOG4J2-1157:  Fix compilation error for classes annotated with @Plugin. 
Thanks to Norbert Bartels.
o LOG4J2-948:  Fix plugin documentation error about Converters. Thanks to 
Andrew Flower.
o LOG4J2-1193:  Prefix all thread names Log4j creates with "Log4j2-".
o LOG4J2-1194:  Documentation does not match parameters for 
LoggerNameLevelRewritePolicy. Thanks to Adam Brin.
o LOG4J2-1196:  MongoDbConnection does not close MongoClient. Thanks to René 
Zanner.

Changes:
o LOG4J2-649:  Add PurgePolicy and IdlePurgePolicy to RoutingAppender. Thanks 
to Aleksey Zvolinsky.
o LOG4J2-1202:  Remove ConfigurationMonitor. The WatchManager is now used to 
check for configuration changes.
o LOG4J2-1174:  Update Jackson from 2.6.2 to 2.6.3.
o LOG4J2-1207:  Update kafka-clients from 0.8.2.2 to 0.9.0.0.


Apache Log4j 2.5 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/ <http://logging.apache.org/log4j/2.x/>

Reply via email to