diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/properties/MarkerFilterPropertiesCaseTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/properties/MarkerFilterPropertiesCaseTest.java new file mode 100644 index 00000000000..e55f4feb6df --- /dev/null +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/properties/MarkerFilterPropertiesCaseTest.java @@ -0,0 +1,19 @@ +package org.apache.logging.log4j.core.config.properties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.LifeCycle; +import org.apache.logging.log4j.core.test.junit.LoggerContextSource; +import org.junit.jupiter.api.Test; + +class MarkerFilterPropertiesCaseTest { + + @Test + @LoggerContextSource("log4j2-properties-markerfilter-miscase.properties") + void testMarkerFilterPropertyCase(final Configuration config) { + assertNotNull(config); + assertEquals(LifeCycle.State.STARTED, config.getState(), "Configuration did not start"); + } +} diff --git a/log4j-core-test/src/test/resources/log4j2-properties-markerfilter-miscase.properties b/log4j-core-test/src/test/resources/log4j2-properties-markerfilter-miscase.properties new file mode 100644 index 00000000000..c2233101e94 --- /dev/null +++ b/log4j-core-test/src/test/resources/log4j2-properties-markerfilter-miscase.properties @@ -0,0 +1,16 @@ +status = ERROR +dest = err + +appender.Stdout.type = Console +appender.Stdout.name = StdOut +appender.Stdout.target = SYSTEM_OUT +appender.Stdout.layout.type = PatternLayout +appender.Stdout.layout.pattern = %d [%t] %-5level: %msg%n%throwable + +appender.Stdout.filter.marker.type = MarkerFilter +appender.Stdout.filter.marker.onMatch = DENY +appender.Stdout.filter.marker.onMisMatch = NEUTRAL +appender.Stdout.filter.marker.marker = FLOW + +rootLogger.appenderRef.console.ref = StdOut +rootLogger.level = ERROR 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 4903e8bcb50..330f10d254d 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 @@ -257,8 +257,8 @@ private FilterComponentBuilder createFilter(final String key, final Properties p if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Filter " + key); } - final String onMatch = (String) properties.remove(AbstractFilterBuilder.ATTR_ON_MATCH); - final String onMismatch = (String) properties.remove(AbstractFilterBuilder.ATTR_ON_MISMATCH); + final String onMatch = removeIgnoreCase(properties, AbstractFilterBuilder.ATTR_ON_MATCH); + final String onMismatch = removeIgnoreCase(properties, AbstractFilterBuilder.ATTR_ON_MISMATCH); final FilterComponentBuilder filterBuilder = builder.newFilter(type, onMatch, onMismatch); return processRemainingProperties(filterBuilder, properties); } @@ -418,4 +418,15 @@ public PropertiesConfigurationBuilder setLoggerContext(final LoggerContext logge public LoggerContext getLoggerContext() { return loggerContext; } + + private static String removeIgnoreCase(final Properties properties, final String key) { + for (final String k : properties.stringPropertyNames()) { + if (k.equalsIgnoreCase(key)) { + final String value = properties.getProperty(k); + properties.remove(k); + return value; + } + } + return null; + } }