This is an automated email from the ASF dual-hosted git repository. ramanathan1504 pushed a commit to branch ramanathan1504-issue-2351 in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 94e828752afc1573ea4a33dd72afaf52de93da1a Author: Michael Morris <[email protected]> AuthorDate: Sun Mar 29 21:11:24 2026 +0100 Discard defined but unused loggers, appenders and filters (#4069) --- log4j-core-test/src/test/resources/log4j-rolling.properties | 5 +++++ .../config/properties/PropertiesConfigurationBuilder.java | 7 +++++++ .../.2.x.x/prevent_configexception_non_used_config.xml | 13 +++++++++++++ 3 files changed, 25 insertions(+) diff --git a/log4j-core-test/src/test/resources/log4j-rolling.properties b/log4j-core-test/src/test/resources/log4j-rolling.properties index 04ec5bb9f3..c3aae02bf7 100644 --- a/log4j-core-test/src/test/resources/log4j-rolling.properties +++ b/log4j-core-test/src/test/resources/log4j-rolling.properties @@ -51,6 +51,11 @@ appender.my.list.filters = threshold appender.my.list.filter.threshold.type = ThresholdFilter appender.my.list.filter.threshold.level = error +appender.unused.type = RollingFile +appender.unused.name = UnusedRollingFile +appender.unused.fileName = ${filename}.unused +appender.unused.filePattern = target/rolling2/test1-%d{MM-dd-yy-HH-mm-ss}-unused-%i.log.gz + loggers = rolling.file logger.rolling.file.name = org.apache.logging.log4j.core.appender.rolling diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java index e4770a80ab..4903e8bcb5 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java @@ -131,6 +131,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory final String name = filterName.trim(); builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name))); } + removeDefinedButUnusedProperties("filter"); } else { final Map<String, Properties> filters = @@ -148,6 +149,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory builder.add(createAppender( appenderName.trim(), PropertiesUtil.extractSubset(rootProperties, "appender." + name))); } + removeDefinedButUnusedProperties(Appender.ELEMENT_TYPE); } else { final Map<String, Properties> appenders = PropertiesUtil.partitionOnCommonPrefixes( PropertiesUtil.extractSubset(rootProperties, Appender.ELEMENT_TYPE)); @@ -165,6 +167,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory builder.add(createLogger(name, PropertiesUtil.extractSubset(rootProperties, "logger." + name))); } } + removeDefinedButUnusedProperties("logger"); } else { final Map<String, Properties> loggers = PropertiesUtil.partitionOnCommonPrefixes( @@ -194,6 +197,10 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory return builder.build(false); } + private void removeDefinedButUnusedProperties(final String prefix) { + PropertiesUtil.extractSubset(rootProperties, prefix); + } + private void processRemainingProperties( final ConfigurationBuilder<PropertiesConfiguration> builder, final Properties properties) { while (properties.size() > 0) { diff --git a/src/changelog/.2.x.x/prevent_configexception_non_used_config.xml b/src/changelog/.2.x.x/prevent_configexception_non_used_config.xml new file mode 100644 index 0000000000..b489fa0e24 --- /dev/null +++ b/src/changelog/.2.x.x/prevent_configexception_non_used_config.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entry xmlns="https://logging.apache.org/xml/ns" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + https://logging.apache.org/xml/ns + https://logging.apache.org/xml/ns/log4j-changelog-0.xsd" + type="added"> + <issue id="4036" link="https://github.com/apache/logging-log4j2/issues/4036"/> + <issue id="4069" link="https://github.com/apache/logging-log4j2/pull/4069"/> + <description format="asciidoc"> + Disregarded defined logger, appender and filter properties not referenced in loggers, appenders and filters respectively + </description> +</entry>
