This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/2.x by this push:
     new c889dcbb3e Discard defined but unused loggers, appenders and filters 
(#4069)
c889dcbb3e is described below

commit c889dcbb3ea5044c4d78f4ffae2ba9559105a0d0
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>

Reply via email to