[LOG4J2-63] Support configuration from version 1.x log4j.properties. Partial support for XML and HTML layouts (defaults only).
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1ecb8ec8 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1ecb8ec8 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1ecb8ec8 Branch: refs/heads/LOG4J2-1278-gc-free-logger Commit: 1ecb8ec81d75a4dedf6dada396af1699bb169d58 Parents: 9a01ec6 Author: ggregory <[email protected]> Authored: Wed Mar 9 00:42:41 2016 -0800 Committer: ggregory <[email protected]> Committed: Wed Mar 9 00:42:41 2016 -0800 ---------------------------------------------------------------------- log4j-1.2-api/pom.xml | 5 ++++ .../config/Log4j1ConfigurationFactory.java | 20 +++++++++----- .../config/Log4j1ConfigurationFactoryTest.java | 28 +++++++++++++++----- .../log4j-console-HtmlLayout.properties | 18 +++++++++++++ .../log4j-console-XmlLayout.properties | 18 +++++++++++++ 5 files changed, 77 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1ecb8ec8/log4j-1.2-api/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-1.2-api/pom.xml b/log4j-1.2-api/pom.xml index b5d8814..7fea76d 100644 --- a/log4j-1.2-api/pom.xml +++ b/log4j-1.2-api/pom.xml @@ -80,6 +80,11 @@ <artifactId>commons-io</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-xml</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> <plugins> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1ecb8ec8/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java ---------------------------------------------------------------------- diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java index 470a3fe..0e5d8d6 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java @@ -54,6 +54,8 @@ import org.apache.logging.log4j.status.StatusLogger; * <li>Target</li> * <li>layout = org.apache.log4j.PatternLayout</li> * <li>layout = org.apache.log4j.SimpleLayout</li> + * <li>layout = org.apache.log4j.HtmlLayout (partial)</li> + * <li>layout = org.apache.log4j.XmlLayout (partial)</li> * <li>layout.ConversionPattern</li> * </ul> * </ul> @@ -94,25 +96,31 @@ public class Log4j1ConfigurationFactory extends ConfigurationFactory { final ConfigurationBuilder<BuiltConfiguration> builder) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(name, "CONSOLE"); buildConsoleAppenderTarget(properties, name, builder, appenderBuilder); - buildConsoleAppenderLayout(properties, name, builder, appenderBuilder); + buildAppenderLayout(properties, name, builder, appenderBuilder); buildConsoleAppenderFollow(properties, name, builder, appenderBuilder); builder.add(appenderBuilder); } - private void buildConsoleAppenderLayout(final Properties properties, final String name, + private void buildAppenderLayout(final Properties properties, final String name, final ConfigurationBuilder<BuiltConfiguration> builder, final AppenderComponentBuilder appenderBuilder) { final String layoutValue = getLog4jAppenderValue(properties, name, "layout", null); if (layoutValue != null) { final String cpValue = getLog4jAppenderValue(properties, name, "layout.ConversionPattern", null); switch (layoutValue) { case "org.apache.log4j.PatternLayout": { - final LayoutComponentBuilder layoutBuilder = newPatternLayout(builder, cpValue); - appenderBuilder.add(layoutBuilder); + appenderBuilder.add(newPatternLayout(builder, cpValue)); break; } case "org.apache.log4j.SimpleLayout": { - final LayoutComponentBuilder layoutBuilder = newPatternLayout(builder, "%level - %m%n"); - appenderBuilder.add(layoutBuilder); + appenderBuilder.add(newPatternLayout(builder, "%level - %m%n")); + break; + } + case "org.apache.log4j.HTMLLayout": { + appenderBuilder.add(builder.newLayout("HtmlLayout")); + break; + } + case "org.apache.log4j.XMLLayout": { + appenderBuilder.add(builder.newLayout("XmlLayout")); break; } default: http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1ecb8ec8/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java ---------------------------------------------------------------------- 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 13bcdc2..c31fe37 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 @@ -19,17 +19,20 @@ package org.apache.log4j.config; import java.net.URL; import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.appender.ConsoleAppender; import org.apache.logging.log4j.core.appender.ConsoleAppender.Target; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.layout.HtmlLayout; import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.core.layout.XmlLayout; import org.junit.Assert; import org.junit.Test; public class Log4j1ConfigurationFactoryTest { - private void testConsole(final String configResource, final String expectedPattern) throws Exception { + private Layout<?> testConsole(final String configResource) throws Exception { final URL configLocation = ClassLoader.getSystemResource(configResource); Assert.assertNotNull(configLocation); final Configuration configuration = new Log4j1ConfigurationFactory().getConfiguration("test", @@ -38,23 +41,36 @@ public class Log4j1ConfigurationFactoryTest { final ConsoleAppender appender = configuration.getAppender("Console"); Assert.assertNotNull(appender); // Can't set ImmediateFlush for a Console Appender in Log4j 2 like you can in 1.2 - Assert.assertTrue(appender.getImmediateFlush()); + Assert.assertTrue(appender.getImmediateFlush()); Assert.assertEquals(Target.SYSTEM_ERR, appender.getTarget()); - final PatternLayout layout = (PatternLayout) appender.getLayout(); - Assert.assertEquals(expectedPattern, layout.getConversionPattern()); // final LoggerConfig loggerConfig = configuration.getLoggerConfig("com.example.foo"); Assert.assertNotNull(loggerConfig); Assert.assertEquals(Level.DEBUG, loggerConfig.getLevel()); + return appender.getLayout(); + } + + @Test + public void testConsoleHtmlLayout() throws Exception { + final Layout<?> layout = testConsole("config-1.2/log4j-console-HtmlLayout.properties"); + Assert.assertTrue(layout instanceof HtmlLayout); } @Test public void testConsolePatternLayout() throws Exception { - testConsole("config-1.2/log4j-console-PatternLayout.properties", "%d{ISO8601} [%t][%c] %-5p: %m%n"); + final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-PatternLayout.properties"); + Assert.assertEquals("%d{ISO8601} [%t][%c] %-5p: %m%n", layout.getConversionPattern()); } @Test public void testConsoleSimpleLayout() throws Exception { - testConsole("config-1.2/log4j-console-SimpleLayout.properties", "%level - %m%n"); + final PatternLayout layout = (PatternLayout) testConsole("config-1.2/log4j-console-SimpleLayout.properties"); + Assert.assertEquals("%level - %m%n", layout.getConversionPattern()); + } + + @Test + public void testConsoleXmlLayout() throws Exception { + final Layout<?> layout = testConsole("config-1.2/log4j-console-XmlLayout.properties"); + Assert.assertTrue(layout instanceof XmlLayout); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1ecb8ec8/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-HtmlLayout.properties ---------------------------------------------------------------------- diff --git a/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-HtmlLayout.properties b/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-HtmlLayout.properties new file mode 100644 index 0000000..decd369 --- /dev/null +++ b/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-HtmlLayout.properties @@ -0,0 +1,18 @@ +############################################################################### +# +# Log4J 1.2 Configuration. +# + +log4j.rootLogger=TRACE, Console + +############################################################################## +# +# The Console log +# + +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.ImmediateFlush=false +log4j.appender.Console.Target=System.err +log4j.appender.Console.layout=org.apache.log4j.HTMLLayout + +log4j.logger.com.example.foo = DEBUG http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1ecb8ec8/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-XmlLayout.properties ---------------------------------------------------------------------- diff --git a/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-XmlLayout.properties b/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-XmlLayout.properties new file mode 100644 index 0000000..155b1ff --- /dev/null +++ b/log4j-1.2-api/src/test/resources/config-1.2/log4j-console-XmlLayout.properties @@ -0,0 +1,18 @@ +############################################################################### +# +# Log4J 1.2 Configuration. +# + +log4j.rootLogger=TRACE, Console + +############################################################################## +# +# The Console log +# + +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.ImmediateFlush=false +log4j.appender.Console.Target=System.err +log4j.appender.Console.layout=org.apache.log4j.XMLLayout + +log4j.logger.com.example.foo = DEBUG
