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 2016/03/09 09:42:48 UTC

logging-log4j2 git commit: [LOG4J2-63] Support configuration from version 1.x log4j.properties. Partial support for XML and HTML layouts (defaults only).

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 9a01ec66e -> 1ecb8ec81


[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/master
Commit: 1ecb8ec81d75a4dedf6dada396af1699bb169d58
Parents: 9a01ec6
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 9 00:42:41 2016 -0800
Committer: ggregory <gg...@apache.org>
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