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

The artifacts may be downloaded from 
https://logging.apache.org/log4j/2.x/download.html.

This release contains the changes noted below:

        • Over 50 improvements and fixes to the Log4j 1.x support. Continued 
testing has shown it is a suitable replacement for Log4j 1.x in most cases.
        • Scripting now requires a system property be specified naming the 
languages the user wishes to allow. The scripting engine will not load if the 
property isn't set.
        • By default, the only remote protocol allowed for loading 
configuration files is HTTPS. Users can specify a system property to allow 
others or prevent remote loading entirely.
        • Variable resolution has been modified so that only properties defined 
as properties in the configuration file can be recursive. All other Lookups are 
now non-recursive. This addresses issues users were having resolving lookups 
specified in property definitions for use in the RoutingAppender and 
RollingFileAppender due to restrictions put in place in 2.17.1.
        • Many other fixes and improvements.

Due to a break in compatibility in the SLF4J binding, Log4j now ships with two 
versions of the SLF4J to Log4j adapters. log4j-slf4j-impl should be used with 
SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x 
and later. SLF4J-2.0.0 alpha releases are not fully supported. See 
https://issues.apache.org/jira/browse/LOG4J2-2975 and 
https://jira.qos.ch/browse/SLF4J-511.

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

GA Release 2.17.2

Changes in this version include:

New Features

        • LOG4J2-3297: Limit loading of configuration via a url to https by 
default.
        • LOG4J2-2486: Require log4j2.Script.enableLanguages to be specified to 
enable scripting for specific languages.
        • LOG4J2-3303: Add TB support to FileSize. Thanks to ramananravi.
        • LOG4J2-3282: Add the log4j-to-jul JDK Logging Bridge Thanks to 
Michael Vorburger.
        • : Add 
org.apache.logging.log4j.core.appender.AsyncAppender.getAppenders() to more 
easily port from org.apache.log4j.AsyncAppender.getAllAppenders().
        • : Add Configurator.setLevel(Logger, Level), setLevel(String, String), 
and setLevel(Class, Level). Thanks to Gary Gregory.
        • LOG4J2-3341: Add shorthand syntax for properties configuration format 
for specifying a logger level and appender refs.
        • LOG4J2-3391: Add optional additional fields to NoSQLAppender. Thanks 
to Gary Gregory.
Fixed Bugs

        • LOG4J2-3304: Flag LogManager as initiialized if the LoggerFactory is 
provided as a property. Thanks to francis-FY.
        • LOG4J2-3404: Fix DefaultConfiguration leak in PatternLayout Thanks to 
Piotr Karwasz.
        • LOG4J2-3405: Document that the Spring Boot Lookup requires the 
log4j-spring-boot dependency.
        • LOG4J2-3317: Fix RoutingAppender backcompat and disallow recursive 
evaluation of lookup results outside of configuration properties.
        • LOG4J2-3333: Fix ThreadContextDataInjector initialization deadlock
        • LOG4J2-3358: Fix substitutions when programmatic configuration is used
        • LOG4J2-3306: OptionConverter could cause a StackOverflowError.
        • : Log4j 1.2 bridge class ConsoleAppender should extend WriterAppender 
and provide better compatibility with custom appenders.
        • : Log4j 1.2 bridge method NDC.inherit(Stack) should not use generics 
to provide source compatibility.
        • : Log4j 1.2 bridge class PatternLayout is missing constants 
DEFAULT_CONVERSION_PATTERN and TTCC_CONVERSION_PATTERN.
        • : Log4j 1.2 bridge class PropertyConfigurator should implement 
Configurator.
        • : Log4j 1.2 bridge interface Configurator doConfigure() methods 
should use LoggerRepository, not LoggerContext.
        • : Log4j 1.2 bridge class OptionConverter is missing 
selectAndConfigure() methods.
        • : Log4j 1.2 bridge class Category should implement AppenderAttachable.
        • : Log4j 1.2 bridge method Category.exists(String) should be static.
        • : Log4j 1.2 bridge methods missing in org.apache.log4j.Category: 
getDefaultHierarchy(), getHierarchy(), getLoggerRepository().
        • : Log4j 1.2 bridge class LogManager default constructor should be 
public.
        • : Log4j 1.2 bridge interface org.apache.log4j.spi.RendererSupport was 
in the wrong package and incomplete.
        • : Log4j 1.2 bridge interfaces missing from package 
org.apache.log4j.spi: ThrowableRenderer, ThrowableRendererSupport, 
TriggeringEventEvaluator.
        • : Log4j 1.2 bridge missing class org.apache.log4j.or.RendererMap.
        • LOG4J2-3281: Log4j 1.2 bridge PropertiesConfiguration.buildAppender 
not adding filters to custom appender.
        • LOG4J2-3316: Log4j 1.2 bridge should ignore case in properties file 
keys.
        • : Log4j 1.2 bridge adds org.apache.log4j.component.helpers.Constants.
        • : Log4j 1.2 bridge adds org.apache.log4j.helpers.LogLog.
        • : Log4j 1.2 bridge adds org.apache.log4j.helpers.Loader.
        • : Log4j 1.2 bridge adds org.apache.log4j.spi.RootLogger.
        • : Log4j 1.2 bridge class Category is missing some protected instance 
variables.
        • : Log4j 1.2 bridge adds org.apache.log4j.Hierarchy.
        • : Log4j 1.2 bridge methods Category.getChainedPriority() and 
getEffectiveLevel() should not be final.
        • : Log4j 1.2 bridge adds org.apache.log4j.spi.NOPLoggerRepository and 
NOPLogger.
        • : Log4j 1.2 bridge adds 
org.apache.log4j.spi.DefaultRepositorySelector.
        • : Log4j 1.2 bridge implements LogManager.getCurrentLoggers() fully.
        • LOG4J2-3326: Log4j 1.2 bridge fixes parsing filters in properties 
configuration file #680. Thanks to Benjamin Röhl, Gary Gregory.
        • LOG4J2-3326: Log4j 1.2 bridge missing 
OptionConverter.instantiateByKey(Properties, String, Class, Object). Thanks to 
Gary Gregory.
        • LOG4J2-3326: Log4j 1.2 bridge class org.apache.log4j.spi.LoggingEvent 
missing constructors and public instance variable. Thanks to Gary Gregory.
        • LOG4J2-3328: Log4j 1.2 bridge does not support system properties in 
log4j.xml. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge now logs a warning instead of throwing an 
NullPointerException when building a Syslog appender with a missing 
"SyslogHost" param. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge should allow property and XML attributes to start 
with either an upper-case or lower-case letter. Thanks to Gary Gregory, Piotr 
P. Karwasz.
        • : Log4j 1.2 bridge uses the wrong default values for a TTCCLayout 
#709. Thanks to Gary Gregory, Piotr P. Karwasz.
        • : Log4j 1.2 bridge throws ClassCastException when using SimpleLayout 
and others #708. Thanks to Gary Gregory, Piotr P. Karwasz.
        • : Log4j 1.2 bridge uses the wrong file pattern for rolling file 
appenders #710. Thanks to Gary Gregory, Piotr P. Karwasz.
        • : Log4j 1.2 bridge throws ClassCastException when using SimpleLayout 
and others #708. Thanks to Gary Gregory, Piotr P. Karwasz.
        • : Log4j 1.2 bridge creates a SocketAppender instead of a 
SyslogAppender. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge uses some incorrect default property values in 
some appenders. Thanks to Piotr P. Karwasz.
        • : Log4j 1.2 bridge supports the SocketAppender. Thanks to Gary 
Gregory.
        • : Log4j 1.2 bridge missing DefaultThrowableRenderer. Thanks to Gary 
Gregory.
        • : Log4j 1.2 bridge missing some ThrowableInformation constructors. 
Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missing some LocationInfo constructors. Thanks to 
Gary Gregory.
        • : Log4j 1.2 bridge missed Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missed org.apache.log4j.pattern.FormattingInfo. 
Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missed org.apache.log4j.pattern.NameAbbreviator. 
Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missing UtilLoggingLevel. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missing FormattingInfo. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missing PatternConverter. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge missing PatternParser. Thanks to Gary Gregory.
        • : Log4j 1.2 bridge issues with filters #753. Thanks to ppkarwasz, 
Gary Gregory.
        • : Log4j 1.2 bridge implements most of DOMConfigurator. Thanks to Gary 
Gregory.
        • : JndiManager reverts to 2.17.0 behavior: Read the system property 
for each call.
        • LOG4J2-3330: Configurator.setLevel not fetching the correct 
LoggerContext. Thanks to Mircea Lemnaru, Gary Gregory.
        • : Fix DTD error: Add missing ELEMENT for Marker.
        • : Fix log4j-jakarta-web service file #723. Thanks to Gary Gregory, 
Piotr P. Karwasz.
        • LOG4J2-3392: AppenderLoggingException logging any exception to a 
MongoDB Appender. Thanks to Gary Gregory, Omer U.
        • LOG4J2-3392: Possible NullPointerException in MongoDb4DocumentObject, 
MongoDbDocumentObject, DefaultNoSqlObject. Thanks to Gary Gregory.
        • : Trim whitespace before parsing a String into an Integer. Thanks to 
Gary Gregory.
        • LOG4J2-3410: Log4j 1.2 bridge throws a ClassCastException when 
logging a Map with non-String keys. Thanks to Barry Sham, Gary Gregory.
        • LOG4J2-3407: Log4j 1.2 bridge Check for non-existent appender when 
parsing properties #761. Thanks to Kenny MacLeod.
        • LOG4J2-3407: Log4j 1.2 bridge supports global threshold #764. Thanks 
to Piotr P. Karwasz.
Changes

        • LOG4J2-3267: Change modifier of method 
org.apache.logging.log4j.core.tools.Generate#generate to public (was package 
private) to facilitate automated code generation.
Apache Log4j 2.17.2 requires a minimum of Java 8 to build and run. Log4j 2.12.4 
is the last release to support Java 7. Log4j 2.3.2 is the last release to 
support Java 6. Java 6 and Java 7 are no longer supported by the Log4j team.

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:

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

Reply via email to