Skip to content

Commit c889dcb

Browse files
Discard defined but unused loggers, appenders and filters (#4069)
1 parent 11e74d7 commit c889dcb

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

log4j-core-test/src/test/resources/log4j-rolling.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ appender.my.list.filters = threshold
5151
appender.my.list.filter.threshold.type = ThresholdFilter
5252
appender.my.list.filter.threshold.level = error
5353

54+
appender.unused.type = RollingFile
55+
appender.unused.name = UnusedRollingFile
56+
appender.unused.fileName = ${filename}.unused
57+
appender.unused.filePattern = target/rolling2/test1-%d{MM-dd-yy-HH-mm-ss}-unused-%i.log.gz
58+
5459
loggers = rolling.file
5560

5661
logger.rolling.file.name = org.apache.logging.log4j.core.appender.rolling

log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public PropertiesConfiguration build() {
131131
final String name = filterName.trim();
132132
builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name)));
133133
}
134+
removeDefinedButUnusedProperties("filter");
134135
} else {
135136

136137
final Map<String, Properties> filters =
@@ -148,6 +149,7 @@ public PropertiesConfiguration build() {
148149
builder.add(createAppender(
149150
appenderName.trim(), PropertiesUtil.extractSubset(rootProperties, "appender." + name)));
150151
}
152+
removeDefinedButUnusedProperties(Appender.ELEMENT_TYPE);
151153
} else {
152154
final Map<String, Properties> appenders = PropertiesUtil.partitionOnCommonPrefixes(
153155
PropertiesUtil.extractSubset(rootProperties, Appender.ELEMENT_TYPE));
@@ -165,6 +167,7 @@ public PropertiesConfiguration build() {
165167
builder.add(createLogger(name, PropertiesUtil.extractSubset(rootProperties, "logger." + name)));
166168
}
167169
}
170+
removeDefinedButUnusedProperties("logger");
168171
} else {
169172

170173
final Map<String, Properties> loggers = PropertiesUtil.partitionOnCommonPrefixes(
@@ -194,6 +197,10 @@ public PropertiesConfiguration build() {
194197
return builder.build(false);
195198
}
196199

200+
private void removeDefinedButUnusedProperties(final String prefix) {
201+
PropertiesUtil.extractSubset(rootProperties, prefix);
202+
}
203+
197204
private void processRemainingProperties(
198205
final ConfigurationBuilder<PropertiesConfiguration> builder, final Properties properties) {
199206
while (properties.size() > 0) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<entry xmlns="https://logging.apache.org/xml/ns"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="
5+
https://logging.apache.org/xml/ns
6+
https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
7+
type="added">
8+
<issue id="4036" link="https://github.com/apache/logging-log4j2/issues/4036"/>
9+
<issue id="4069" link="https://github.com/apache/logging-log4j2/pull/4069"/>
10+
<description format="asciidoc">
11+
Disregarded defined logger, appender and filter properties not referenced in loggers, appenders and filters respectively
12+
</description>
13+
</entry>

0 commit comments

Comments
 (0)