You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/20 15:14:44 UTC
[logging-log4j2] 02/02: Log4j 1.2 bridge should allow property and XML attributes to start with either an upper-case or lower-case letter.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 26716d6df9bb1a9cc2f5128c4d452c7cc5c5b93c
Author: ppkarwasz <un...@github>
AuthorDate: Thu Jan 20 08:23:47 2022 -0500
Log4j 1.2 bridge should allow property and XML attributes to start with either an upper-case or lower-case letter.
---
.../config/AbstractLog4j1ConfigurationTest.java | 58 ++++++++++++++++++++++
.../config/Log4j1ConfigurationFactoryTest.java | 54 +++++++++++---------
.../log4j/config/PropertiesConfigurationTest.java | 25 +++++++++-
.../apache/log4j/config/XmlConfigurationTest.java | 45 ++++++++++++-----
.../config-1.2/log4j-capitalization.properties | 27 ++++++++++
.../resources/config-1.2/log4j-capitalization.xml | 28 +++++++++++
6 files changed, 200 insertions(+), 37 deletions(-)
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/AbstractLog4j1ConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AbstractLog4j1ConfigurationTest.java
new file mode 100644
index 0000000..69d2c09
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AbstractLog4j1ConfigurationTest.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.log4j.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+
+public abstract class AbstractLog4j1ConfigurationTest {
+
+ abstract Configuration getConfiguration(String configResourcePrefix) throws URISyntaxException, IOException;
+
+ public void testConsoleCapitalization() throws Exception {
+ final Configuration config = getConfiguration("config-1.2/log4j-capitalization");
+ final Appender capitalized = config.getAppender("ConsoleCapitalized");
+ assertNotNull(capitalized);
+ assertEquals(capitalized.getClass(), ConsoleAppender.class);
+ final Appender javaStyle = config.getAppender("ConsoleJavaStyle");
+ assertNotNull(javaStyle);
+ assertEquals(javaStyle.getClass(), ConsoleAppender.class);
+ testConsoleAppender((ConsoleAppender) capitalized, (ConsoleAppender) javaStyle);
+ }
+
+ private void testConsoleAppender(ConsoleAppender expected, ConsoleAppender actual) {
+ assertEquals("immediateFlush", expected.getImmediateFlush(), actual.getImmediateFlush());
+ assertEquals("target", expected.getTarget(), actual.getTarget());
+ assertEquals("layoutClass", expected.getLayout().getClass(), actual.getLayout().getClass());
+ if (expected.getLayout() instanceof PatternLayout) {
+ patternLayoutEquals((PatternLayout) expected.getLayout(), (PatternLayout) actual.getLayout());
+ }
+ }
+
+ private void patternLayoutEquals(PatternLayout expected, PatternLayout actual) {
+ assertEquals(expected.getCharset(), actual.getCharset());
+ assertEquals(expected.getConversionPattern(), actual.getConversionPattern());
+ }
+}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
index 5ebf0ec..f206790 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
@@ -28,7 +27,6 @@ import java.nio.file.FileSystemException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.concurrent.TimeUnit;
-
import org.apache.log4j.layout.Log4j1XmlLayout;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Appender;
@@ -50,7 +48,18 @@ import org.apache.logging.log4j.core.layout.HtmlLayout;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.junit.Test;
-public class Log4j1ConfigurationFactoryTest {
+public class Log4j1ConfigurationFactoryTest extends AbstractLog4j1ConfigurationTest {
+
+ private static final String SUFFIX = ".properties";
+
+ @Override
+ protected Configuration getConfiguration(final String configResource) throws URISyntaxException {
+ final URL configLocation = ClassLoader.getSystemResource(configResource + SUFFIX);
+ assertNotNull(configResource, configLocation);
+ final Configuration configuration = new Log4j1ConfigurationFactory().getConfiguration(null, "test", configLocation.toURI());
+ assertNotNull(configuration);
+ return configuration;
+ }
private Layout<?> testConsole(final String configResource) throws Exception {
final Configuration configuration = getConfiguration(configResource);
@@ -81,61 +90,53 @@ public class Log4j1ConfigurationFactoryTest {
return appender.getLayout();
}
- private Configuration getConfiguration(final String configResource) throws URISyntaxException {
- final URL configLocation = ClassLoader.getSystemResource(configResource);
- assertNotNull(configResource, configLocation);
- final Configuration configuration = new Log4j1ConfigurationFactory().getConfiguration(null, "test", configLocation.toURI());
- assertNotNull(configuration);
- return configuration;
- }
-
@Test
public void testConsoleEnhancedPatternLayout() throws Exception {
- final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-EnhancedPatternLayout.properties");
+ final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-EnhancedPatternLayout");
assertEquals("%d{ISO8601} [%t][%c] %-5p %properties %ndc: %m%n", layout.getConversionPattern());
}
@Test
public void testConsoleHtmlLayout() throws Exception {
- final HtmlLayout layout = (HtmlLayout) testConsole("config-1.2/log4j-console-HtmlLayout.properties");
+ final HtmlLayout layout = (HtmlLayout) testConsole("config-1.2/log4j-console-HtmlLayout");
assertEquals("Headline", layout.getTitle());
assertTrue(layout.isLocationInfo());
}
@Test
public void testConsolePatternLayout() throws Exception {
- final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-PatternLayout.properties");
+ final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-PatternLayout");
assertEquals("%d{ISO8601} [%t][%c] %-5p: %m%n", layout.getConversionPattern());
}
@Test
public void testConsoleSimpleLayout() throws Exception {
- final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-SimpleLayout.properties");
+ final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-SimpleLayout");
assertEquals("%level - %m%n", layout.getConversionPattern());
}
@Test
public void testConsoleTtccLayout() throws Exception {
- final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-TTCCLayout.properties");
+ final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-TTCCLayout");
assertEquals("%r [%t] %p %notEmpty{%ndc }- %m%n", layout.getConversionPattern());
}
@Test
public void testConsoleXmlLayout() throws Exception {
- final Log4j1XmlLayout layout = (Log4j1XmlLayout) testConsole("config-1.2/log4j-console-XmlLayout.properties");
+ final Log4j1XmlLayout layout = (Log4j1XmlLayout) testConsole("config-1.2/log4j-console-XmlLayout");
assertTrue(layout.isLocationInfo());
assertFalse(layout.isProperties());
}
@Test
public void testFileSimpleLayout() throws Exception {
- final PatternLayout layout = (PatternLayout) testFile("config-1.2/log4j-file-SimpleLayout.properties");
+ final PatternLayout layout = (PatternLayout) testFile("config-1.2/log4j-file-SimpleLayout");
assertEquals("%level - %m%n", layout.getConversionPattern());
}
@Test
public void testNullAppender() throws Exception {
- final Configuration configuration = getConfiguration("config-1.2/log4j-NullAppender.properties");
+ final Configuration configuration = getConfiguration("config-1.2/log4j-NullAppender");
final Appender appender = configuration.getAppender("NullAppender");
assertNotNull(appender);
assertEquals("NullAppender", appender.getName());
@@ -144,17 +145,17 @@ public class Log4j1ConfigurationFactoryTest {
@Test
public void testRollingFileAppender() throws Exception {
- testRollingFileAppender("config-1.2/log4j-RollingFileAppender.properties", "RFA", "target/hadoop.log.%i");
+ testRollingFileAppender("config-1.2/log4j-RollingFileAppender", "RFA", "target/hadoop.log.%i");
}
@Test
public void testDailyRollingFileAppender() throws Exception {
- testDailyRollingFileAppender("config-1.2/log4j-DailyRollingFileAppender.properties", "DRFA", "target/hadoop.log%d{.yyyy-MM-dd}");
+ testDailyRollingFileAppender("config-1.2/log4j-DailyRollingFileAppender", "DRFA", "target/hadoop.log%d{.yyyy-MM-dd}");
}
@Test
public void testRollingFileAppenderWithProperties() throws Exception {
- testRollingFileAppender("config-1.2/log4j-RollingFileAppender-with-props.properties", "RFA", "target/hadoop.log.%i");
+ testRollingFileAppender("config-1.2/log4j-RollingFileAppender-with-props", "RFA", "target/hadoop.log.%i");
}
@Test
@@ -163,7 +164,7 @@ public class Log4j1ConfigurationFactoryTest {
final Path tempFilePath = new File(tempFileName).toPath();
Files.deleteIfExists(tempFilePath);
try {
- final Configuration configuration = getConfiguration("config-1.2/log4j-system-properties-1.properties");
+ final Configuration configuration = getConfiguration("config-1.2/log4j-system-properties-1");
final RollingFileAppender appender = configuration.getAppender("RFA");
appender.stop(10, TimeUnit.SECONDS);
// System.out.println("expected: " + tempFileName + " Actual: " + appender.getFileName());
@@ -179,7 +180,7 @@ public class Log4j1ConfigurationFactoryTest {
@Test
public void testSystemProperties2() throws Exception {
- final Configuration configuration = getConfiguration("config-1.2/log4j-system-properties-2.properties");
+ final Configuration configuration = getConfiguration("config-1.2/log4j-system-properties-2");
final RollingFileAppender appender = configuration.getAppender("RFA");
assertEquals("${java.io.tmpdir}/hadoop.log", appender.getFileName());
appender.stop(10, TimeUnit.SECONDS);
@@ -243,4 +244,9 @@ public class Log4j1ConfigurationFactoryTest {
configuration.stop();
}
+ @Override
+ @Test
+ public void testConsoleCapitalization() throws Exception {
+ super.testConsoleCapitalization();
+ }
}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
index bc1fb51..bd3a291 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
@@ -21,6 +21,9 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
@@ -36,6 +39,7 @@ import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.filter.CompositeFilter;
import org.apache.logging.log4j.core.filter.Filterable;
import org.apache.logging.log4j.core.filter.LevelRangeFilter;
@@ -44,9 +48,22 @@ import org.junit.Test;
/**
* Test configuration from Properties.
*/
-public class PropertiesConfigurationTest {
+public class PropertiesConfigurationTest extends AbstractLog4j1ConfigurationTest {
private static final String TEST_KEY = "log4j.test.tmpdir";
+ private static final String SUFFIX = ".properties";
+
+ @Override
+ Configuration getConfiguration(String configResourcePrefix) throws URISyntaxException, IOException {
+ final String configResource = configResourcePrefix + SUFFIX;
+ final InputStream inputStream = ClassLoader.getSystemResourceAsStream(configResource);
+ final ConfigurationSource source = new ConfigurationSource(inputStream);
+ final LoggerContext context = LoggerContext.getContext(false);
+ final Configuration configuration = new PropertiesConfigurationFactory().getConfiguration(context, source);
+ assertNotNull("No configuration created", configuration);
+ configuration.initialize();
+ return configuration;
+ }
@Test
public void testConfigureNullPointerException() throws Exception {
@@ -165,4 +182,10 @@ public class PropertiesConfigurationTest {
}
}
+ @Override
+ @Test
+ public void testConsoleCapitalization() throws Exception {
+ super.testConsoleCapitalization();
+ }
+
}
\ No newline at end of file
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
index c4cc360..8c912fa 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
@@ -16,6 +16,17 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@@ -23,27 +34,31 @@ import org.apache.log4j.bridge.AppenderAdapter;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.xml.XmlConfigurationFactory;
import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
-import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.junit.Test;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from XML.
*/
-public class XmlConfigurationTest {
+public class XmlConfigurationTest extends AbstractLog4j1ConfigurationTest {
+
+ private static final String SUFFIX = ".xml";
+
+ @Override
+ Configuration getConfiguration(String configResourcePrefix) throws URISyntaxException, IOException {
+ final String configResource = configResourcePrefix + SUFFIX;
+ final InputStream inputStream = ClassLoader.getSystemResourceAsStream(configResource);
+ final ConfigurationSource source = new ConfigurationSource(inputStream);
+ final LoggerContext context = LoggerContext.getContext(false);
+ final Configuration configuration = new XmlConfigurationFactory().getConfiguration(context, source);
+ assertNotNull("No configuration created", configuration);
+ configuration.initialize();
+ return configuration;
+ }
@Test
public void testXML() throws Exception {
@@ -94,4 +109,10 @@ public class XmlConfigurationTest {
return context;
}
+ @Override
+ @Test
+ public void testConsoleCapitalization() throws Exception {
+ super.testConsoleCapitalization();
+ }
+
}
diff --git a/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.properties b/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.properties
new file mode 100644
index 0000000..101d062
--- /dev/null
+++ b/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.properties
@@ -0,0 +1,27 @@
+###############################################################################
+#
+# Log4J 1.2 Configuration.
+#
+
+log4j.rootLogger=TRACE, ConsoleCapitalized, ConsoleJavaStyle
+
+##############################################################################
+#
+# The Console log
+#
+
+log4j.appender.ConsoleCapitalized=org.apache.log4j.ConsoleAppender
+log4j.appender.ConsoleCapitalized.Encoding=ISO-8859-1
+log4j.appender.ConsoleCapitalized.Follow=true
+log4j.appender.ConsoleCapitalized.ImmediateFlush=false
+log4j.appender.ConsoleCapitalized.Target=System.err
+log4j.appender.ConsoleCapitalized.layout=org.apache.log4j.PatternLayout
+log4j.appender.ConsoleCapitalized.layout.ConversionPattern=%d{ISO8601} [%t][%c] %-5p: %m%n
+
+log4j.appender.ConsoleJavaStyle=org.apache.log4j.ConsoleAppender
+log4j.appender.ConsoleJavaStyle.Encoding=ISO-8859-1
+log4j.appender.ConsoleJavaStyle.Follow=true
+log4j.appender.ConsoleJavaStyle.ImmediateFlush=false
+log4j.appender.ConsoleJavaStyle.Target=System.err
+log4j.appender.ConsoleJavaStyle.layout=org.apache.log4j.PatternLayout
+log4j.appender.ConsoleJavaStyle.layout.ConversionPattern=%d{ISO8601} [%t][%c] %-5p: %m%n
diff --git a/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.xml b/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.xml
new file mode 100644
index 0000000..0770db0
--- /dev/null
+++ b/log4j-1.2-api/src/test/resources/config-1.2/log4j-capitalization.xml
@@ -0,0 +1,28 @@
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+ <appender name="ConsoleCapitalized" class="org.apache.log4j.ConsoleAppender">
+ <param name="Encoding" value="ISO-8859-1" />
+ <param name="Follow" value="true" />
+ <param name="ImmediateFlush" value="false" />
+ <param name="Target" value="System.err" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{ISO8601} [%t][%c] %-5p: %m%n" />
+ </layout>
+ </appender>
+
+ <appender name="ConsoleJavaStyle" class="org.apache.log4j.ConsoleAppender">
+ <param name="encoding" value="ISO-8859-1" />
+ <param name="follow" value="true" />
+ <param name="immediateFlush" value="false" />
+ <param name="target" value="System.err" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="conversionPattern" value="%d{ISO8601} [%t][%c] %-5p: %m%n" />
+ </layout>
+ </appender>
+
+ <root>
+ <priority value="trace" />
+ <appender-ref ref="ConsoleCapitalized" />
+ <appender-ref ref="ConsoleJavaStyle" />
+ </root>
+</log4j:configuration>
\ No newline at end of file