2.17.2 (2022-02-23)
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
andRollingFileAppender
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 LOG4J2-2975 and SLF4J-511.
The Log4j 2.17.2 API, as well as many core components, maintains binary compatibility with previous releases.
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 Log4j 2 website.
Changes
Added
-
Add Configurator.setLevel(Logger, Level), setLevel(String, String), and setLevel(Class, Level). (for by Gary Gregory)
-
Add org.apache.logging.log4j.core.appender.AsyncAppender.getAppenders() to more easily port from org.apache.log4j.AsyncAppender.getAllAppenders(). (for by Gary Gregory)
-
Require log4j2.Script.enableLanguages to be specified to enable scripting for specific languages. (for LOG4J2-2486 by Ralph Goers)
-
Add the log4j-to-jul JDK Logging Bridge (for LOG4J2-3282 by Carter Kozak, Michael Vorburger)
-
Limit loading of configuration via a url to https by default. (for LOG4J2-3297 by Ralph Goers)
-
Add TB support to FileSize. (for LOG4J2-3303 by Volkan Yazıcı, ramananravi)
-
Add shorthand syntax for properties configuration format for specifying a logger level and appender refs. (for LOG4J2-3341 by Ralph Goers)
-
Add optional additional fields to NoSQLAppender. (for LOG4J2-3391 by Gary Gregory, Gary Gregory)
Changed
-
Bump Jackson from 2.12.4 to 2.13.1. (for by Gary Gregory)
-
Bump Mockito from 3.11.2 to 4.2.0. (for by Gary Gregory)
-
Bump Woodstox 6.2.6 to 6.2.8. (for by Gary Gregory)
-
Bump awaitility from 4.0.3 to 4.1.1 #663. (for by Gary Gregory)
-
Bump de.flapdoodle.embed:de.flapdoodle.embed.mongo from 3.0.0 to 3.4.1. Update tests for binary incompatibilities in APIs. (for by Gary Gregory)
-
Bump maven-compiler-plugin from 3.8.1 to 3.9.0. (for by Gary Gregory)
-
Bump mongodb3.version from 3.12.4 to 3.12.10 #605. (for by Gary Gregory)
-
Bump net.javacrumbs.json-unit:json-unit from 2.27.0 to 2.28.0. (for by Gary Gregory)
-
Bump org.apache.activemq:activemq-broker from 5.16.3 to 5.16.4. (for by Gary Gregory)
-
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.3.1 to 3.3.2. (for by Gary Gregory)
-
Bump org.assertj:assertj-core from 3.20.2 to 3.22.0. (for by Gary Gregory)
-
Bump org.codehaus.groovy:groovy-* from 3.0.8 to 3.0.9. (for by Gary Gregory)
-
Bump org.eclipse.persistence:org.eclipse.persistence.jpa from 2.7.9 to 2.7.10. (for by Gary Gregory)
-
Bump org.fusesource.jansi:jansi from 2.3.4 to 2.4.0. (for by Gary Gregory)
-
Bump org.jacoco:jacoco-maven-plugin from 0.8.6 to 0.8.7. (for by Gary Gregory)
-
Bump org.junit.jupiter:junit-* from 5.7.2 to 5.8.2. (for by Gary Gregory)
-
Bump org.junit-pioneer:junit-pioneer from 1.5.0 to 1.6.1. (for by Gary Gregory)
-
Bump org.mongodb:bson from 4.2.2 to 4.5.0. (for by Gary Gregory)
-
Bump org.mongodb:mongodb-driver-sync from 4.2.2 to 4.5.0. (for by Gary Gregory)
-
Bump org.springframework:spring-* from 5.3.13 to 5.3.15. (for by Gary Gregory)
-
Bump org.xmlunit:xmlunit-* from 2.8.3 to 2.8.4. (for by Gary Gregory)
-
Replace usages of "compile" with "implementation" in the Gradle docs. (for LOG4J2-3215 by Volkan Yazıcı, quapka)
-
Change modifier of method org.apache.logging.log4j.core.tools.Generate#generate to public (was package private) to facilitate automated code generation. (for LOG4J2-3267 by Remko Popma)
-
log4j-jpl formats message parameters correctly using MessageFormat. (for LOG4J2-3345 by Carter Kozak)
-
Bump Tomcat from 8.5.20 to 10.0.14 in log4j-appserver along with some dependency clean-up. (for LOG4J2-3368 by Volkan Yazıcı)
Fixed
-
Fix DTD error: Add missing ELEMENT for Marker. (for by Gary Gregory)
-
Fix log4j-jakarta-web service file #723. (for by Gary Gregory, Piotr P. Karwasz)
-
JndiManager reverts to 2.17.0 behavior: Read the system property for each call. (for by Gary Gregory)
-
Log4j 1.2 bridge PropertiesConfiguration.buildAppender not adding filters to custom appender. (for LOG4J2-3281 by Gary Gregory)
-
Flag LogManager as initialized if the LoggerFactory is provided as a property. (for LOG4J2-3304 by Ralph Goers, francis-FY)
-
OptionConverter could cause a StackOverflowError. (for LOG4J2-3306 by Ralph Goers)
-
Log4j 1.2 bridge should ignore case in properties file keys. (for LOG4J2-3316 by Gary Gregory)
-
Fix RoutingAppender backward compatibility and disallow recursive evaluation of lookup results outside of configuration properties. (for LOG4J2-3317 by Carter Kozak)
-
Log4j 1.2 bridge class org.apache.log4j.spi.LoggingEvent missing constructors and public instance variable. (for LOG4J2-3326 by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge fixes parsing filters in properties configuration file #680. (for LOG4J2-3326 by Gary Gregory, Benjamin Röhl)
-
Log4j 1.2 bridge missing OptionConverter.instantiateByKey(Properties, String, Class, Object). (for LOG4J2-3326 by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge does not support system properties in log4j.xml. (for LOG4J2-3328 by Gary Gregory, Gary Gregory)
-
Configurator.setLevel not fetching the correct LoggerContext. (for LOG4J2-3330 by Gary Gregory, Mircea Lemnaru)
-
Fix ThreadContextDataInjector initialization deadlock (for LOG4J2-3333 by Carter Kozak)
-
Fix substitutions when programmatic configuration is used (for LOG4J2-3358 by Carter Kozak)
-
AppenderLoggingException logging any exception to a MongoDB Appender. (for LOG4J2-3392 by Gary Gregory, Omer U)
-
Possible NullPointerException in MongoDb4DocumentObject, MongoDbDocumentObject, DefaultNoSqlObject. (for LOG4J2-3392 by Gary Gregory, Gary Gregory)
-
Fix DefaultConfiguration leak in PatternLayout (for LOG4J2-3404 by Carter Kozak, Piotr P. Karwasz)
-
Document that the Spring Boot Lookup requires the log4j-spring-boot dependency. (for LOG4J2-3405 by Ralph Goers)
-
Log4j 1.2 bridge Check for non-existent appender when parsing properties #761. (for LOG4J2-3407 by Gary Gregory, Kenny MacLeod)
-
Log4j 1.2 bridge supports global threshold #764. (for LOG4J2-3407 by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge throws a ClassCastException when logging a Map with non-String keys. (for LOG4J2-3410 by Gary Gregory, Barry Sham)
-
Log4j 1.2 bridge adds org.apache.log4j.Hierarchy. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.component.helpers.Constants. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.helpers.Loader. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.helpers.LogLog. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.spi.DefaultRepositorySelector. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.spi.NOPLoggerRepository and NOPLogger. (for by Gary Gregory)
-
Log4j 1.2 bridge adds org.apache.log4j.spi.RootLogger. (for by Gary Gregory)
-
Log4j 1.2 bridge class Category is missing some protected instance variables. (for by Gary Gregory)
-
Log4j 1.2 bridge class Category should implement AppenderAttachable. (for by Gary Gregory)
-
Log4j 1.2 bridge class ConsoleAppender should extend WriterAppender and provide better compatibility with custom appenders. (for by Gary Gregory)
-
Log4j 1.2 bridge class LogManager default constructor should be public. (for by Gary Gregory)
-
Log4j 1.2 bridge class OptionConverter is missing selectAndConfigure() methods. (for by Gary Gregory)
-
Log4j 1.2 bridge class PatternLayout is missing constants DEFAULT_CONVERSION_PATTERN and TTCC_CONVERSION_PATTERN. (for by Gary Gregory)
-
Log4j 1.2 bridge class PropertyConfigurator should implement Configurator. (for by Gary Gregory)
-
Log4j 1.2 bridge creates a SocketAppender instead of a SyslogAppender. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge implements LogManager.getCurrentLoggers() fully. (for by Gary Gregory)
-
Log4j 1.2 bridge implements most of DOMConfigurator. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge interface Configurator doConfigure() methods should use LoggerRepository, not LoggerContext. (for by Gary Gregory)
-
Log4j 1.2 bridge interface org.apache.log4j.spi.RendererSupport was in the wrong package and incomplete. (for by Gary Gregory)
-
Log4j 1.2 bridge interfaces missing from package org.apache.log4j.spi: ThrowableRenderer, ThrowableRendererSupport, TriggeringEventEvaluator. (for by Gary Gregory)
-
Log4j 1.2 bridge issues with filters #753. (for by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge method Category.exists(String) should be static. (for by Gary Gregory)
-
Log4j 1.2 bridge method NDC.inherit(Stack) should not use generics to provide source compatibility. (for by Gary Gregory)
-
Log4j 1.2 bridge methods Category.getChainedPriority() and getEffectiveLevel() should not be final. (for by Gary Gregory)
-
Log4j 1.2 bridge methods missing in org.apache.log4j.Category: getDefaultHierarchy(), getHierarchy(), getLoggerRepository(). (for by Gary Gregory)
-
Log4j 1.2 bridge missed (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missed org.apache.log4j.pattern.FormattingInfo. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missed org.apache.log4j.pattern.NameAbbreviator. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing DefaultThrowableRenderer. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing FormattingInfo. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing PatternConverter. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing PatternParser. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing UtilLoggingLevel. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing class org.apache.log4j.or.RendererMap. (for by Gary Gregory)
-
Log4j 1.2 bridge missing some LocationInfo constructors. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge missing some ThrowableInformation constructors. (for by Gary Gregory, 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. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge should allow property and XML attributes to start with either an upper-case or lower-case letter. (for by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge supports the SocketAppender. (for by Gary Gregory, Gary Gregory)
-
Log4j 1.2 bridge throws ClassCastException when using SimpleLayout and others #708. (for by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge uses some incorrect default property values in some appenders. (for by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge uses the wrong default values for a TTCCLayout #709. (for by Gary Gregory, Piotr P. Karwasz)
-
Log4j 1.2 bridge uses the wrong file pattern for rolling file appenders #710. (for by Gary Gregory, Piotr P. Karwasz)
-
Trim whitespace before parsing a String into an Integer. (for by Gary Gregory, Gary Gregory)