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/11/12 01:34:28 UTC

logging-log4j2 git commit: [LOG4J2-1697] Add a SerializerBuilder to PatternLayout and deprecate PatternLayout.createSerializer().

Repository: logging-log4j2
Updated Branches:
  refs/heads/master a8b25055a -> ce6580811


[LOG4J2-1697] Add a SerializerBuilder to PatternLayout and deprecate
PatternLayout.createSerializer().

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ce658081
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ce658081
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ce658081

Branch: refs/heads/master
Commit: ce6580811ad8ab0f2bb1941ae478db62c902a8fe
Parents: a8b2505
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Nov 11 17:34:20 2016 -0800
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Nov 11 17:34:20 2016 -0800

----------------------------------------------------------------------
 .../log4j/core/layout/AbstractCsvLayout.java    |   5 +-
 .../logging/log4j/core/layout/JsonLayout.java   |   4 +-
 .../log4j/core/layout/PatternLayout.java        | 110 ++++++++++++++++---
 .../logging/log4j/core/layout/YamlLayout.java   |   4 +-
 .../logging/log4j/core/net/SmtpManager.java     |   2 +-
 src/changes/changes.xml                         |   3 +
 6 files changed, 105 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
index ffa6ea6..47b073c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
@@ -67,8 +67,9 @@ public abstract class AbstractCsvLayout extends AbstractStringLayout {
 
     protected AbstractCsvLayout(final Configuration config, final Charset charset, final CSVFormat csvFormat,
             final String header, final String footer) {
-        super(config, charset, PatternLayout.createSerializer(config, null, header, null, null, false, false),
-                PatternLayout.createSerializer(config, null, footer, null, null, false, false));
+        super(config, charset, 
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(header).build(),
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(footer).build());
         this.format = csvFormat;
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
index 993572b..71e972e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
@@ -814,8 +814,8 @@ public final class JsonLayout extends AbstractJacksonLayout {
         super(config, new JacksonFactory.JSON(encodeThreadContextAsList, includeStacktrace).newWriter(
                     locationInfo, properties, compact),
                 charset, compact, complete, eventEol,
-                PatternLayout.createSerializer(config, null, headerPattern, DEFAULT_HEADER, null, false, false),
-                PatternLayout.createSerializer(config, null, footerPattern, DEFAULT_FOOTER, null, false, false));
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(headerPattern).withDefaultPattern(DEFAULT_HEADER).build(),
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(footerPattern).withDefaultPattern(DEFAULT_FOOTER).build());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
index 5eb9f3c..f5c8a6e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
@@ -112,24 +112,36 @@ public final class PatternLayout extends AbstractStringLayout {
                 patternSelector, alwaysWriteExceptions, noConsoleNoAnsi);
     }
 
+    public static SerializerBuilder newSerializerBuilder() {
+        return new SerializerBuilder();
+    }
+
+    /**
+     * Deprecated, use {@link #newSerializerBuilder()} instead.
+     * 
+     * @param configuration
+     * @param replace
+     * @param pattern
+     * @param defaultPattern
+     * @param patternSelector
+     * @param alwaysWriteExceptions
+     * @param noConsoleNoAnsi
+     * @return a new Serializer.
+     * @deprecated Use {@link #newSerializerBuilder()} instead.
+     */
+    @Deprecated
     public static Serializer createSerializer(final Configuration configuration, final RegexReplacement replace,
             final String pattern, final String defaultPattern, final PatternSelector patternSelector,
             final boolean alwaysWriteExceptions, final boolean noConsoleNoAnsi) {
-        if (Strings.isEmpty(pattern) && Strings.isEmpty(defaultPattern)) {
-            return null;
-        }
-        if (patternSelector == null) {
-            try {
-                final PatternParser parser = createPatternParser(configuration);
-                final List<PatternFormatter> list = parser.parse(pattern == null ? defaultPattern : pattern,
-                        alwaysWriteExceptions, noConsoleNoAnsi);
-                final PatternFormatter[] formatters = list.toArray(new PatternFormatter[0]);
-                return new PatternSerializer(formatters, replace);
-            } catch (final RuntimeException ex) {
-                throw new IllegalArgumentException("Cannot parse pattern '" + pattern + "'", ex);
-            }
-        }
-        return new PatternSelectorSerializer(patternSelector, replace);
+        SerializerBuilder builder = newSerializerBuilder();
+        builder.withAlwaysWriteExceptions(alwaysWriteExceptions);
+        builder.withConfiguration(configuration);
+        builder.withDefaultPattern(defaultPattern);
+        builder.withNoConsoleNoAnsi(noConsoleNoAnsi);
+        builder.withPattern(pattern);
+        builder.withPatternSelector(patternSelector);
+        builder.withReplace(replace);
+        return builder.build();
     }
 
     /**
@@ -315,8 +327,74 @@ public final class PatternLayout extends AbstractStringLayout {
         }
     }
 
-    private static class PatternSelectorSerializer implements Serializer, Serializer2 {
+    public static class SerializerBuilder implements org.apache.logging.log4j.core.util.Builder<Serializer> {
+
+        private Configuration configuration;
+        private RegexReplacement replace;
+        private String pattern;
+        private String defaultPattern;
+        private PatternSelector patternSelector;
+        private boolean alwaysWriteExceptions;
+        private boolean noConsoleNoAnsi;
+        
+        @Override
+        public Serializer build() {
+            if (Strings.isEmpty(pattern) && Strings.isEmpty(defaultPattern)) {
+                return null;
+            }
+            if (patternSelector == null) {
+                try {
+                    final PatternParser parser = createPatternParser(configuration);
+                    final List<PatternFormatter> list = parser.parse(pattern == null ? defaultPattern : pattern,
+                            alwaysWriteExceptions, noConsoleNoAnsi);
+                    final PatternFormatter[] formatters = list.toArray(new PatternFormatter[0]);
+                    return new PatternSerializer(formatters, replace);
+                } catch (final RuntimeException ex) {
+                    throw new IllegalArgumentException("Cannot parse pattern '" + pattern + "'", ex);
+                }
+            }
+            return new PatternSelectorSerializer(patternSelector, replace);
+        }
+
+        public SerializerBuilder withConfiguration(final Configuration configuration) {
+            this.configuration = configuration;
+            return this;
+        }
 
+        public SerializerBuilder withReplace(final RegexReplacement replace) {
+            this.replace = replace;
+            return this;
+        }
+
+        public SerializerBuilder withPattern(final String pattern) {
+            this.pattern = pattern;
+            return this;
+        }
+
+        public SerializerBuilder withDefaultPattern(final String defaultPattern) {
+            this.defaultPattern = defaultPattern;
+            return this;
+        }
+
+        public SerializerBuilder withPatternSelector(final PatternSelector patternSelector) {
+            this.patternSelector = patternSelector;
+            return this;
+        }
+
+        public SerializerBuilder withAlwaysWriteExceptions(final boolean alwaysWriteExceptions) {
+            this.alwaysWriteExceptions = alwaysWriteExceptions;
+            return this;
+        }
+
+        public SerializerBuilder withNoConsoleNoAnsi(boolean noConsoleNoAnsi) {
+            this.noConsoleNoAnsi = noConsoleNoAnsi;
+            return this;
+        }
+        
+    }
+
+    private static class PatternSelectorSerializer implements Serializer, Serializer2 {
+        
         private final PatternSelector patternSelector;
         private final RegexReplacement replace;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/YamlLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/YamlLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/YamlLayout.java
index 61d6ad8..91cfd9e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/YamlLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/YamlLayout.java
@@ -713,8 +713,8 @@ public final class YamlLayout extends AbstractJacksonLayout {
             final String footerPattern, final Charset charset, final boolean includeStacktrace) {
         super(config, new JacksonFactory.YAML(includeStacktrace).newWriter(locationInfo, properties, compact), charset, compact,
                 complete, eventEol,
-                PatternLayout.createSerializer(config, null, headerPattern, DEFAULT_HEADER, null, false, false),
-                PatternLayout.createSerializer(config, null, footerPattern, DEFAULT_FOOTER, null, false, false));
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(headerPattern).withDefaultPattern(DEFAULT_HEADER).build(),
+                PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(footerPattern).withDefaultPattern(DEFAULT_FOOTER).build());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index 5494911..ecefa19 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -141,7 +141,7 @@ public class SmtpManager extends AbstractManager {
         sb.append(filterName);
 
         final String name = "SMTP:" + NameUtil.md5(sb.toString());
-        final Serializer subjectSerializer = PatternLayout.createSerializer(config, null, subject, null, null, false, false);
+        final Serializer subjectSerializer = PatternLayout.newSerializerBuilder().withConfiguration(config).withPattern(subject).build();
 
         return getManager(name, FACTORY, new FactoryData(to, cc, bcc, from, replyTo, subjectSerializer,
             protocol, host, port, username, password, isDebug, numElements));

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce658081/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bfe8ad3..e962a49 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -120,6 +120,9 @@
       <action issue="LOG4J2-1696" dev="ggregory" type="add">
         Add a Builder to MarkerPatternSelector and deprecate MarkerPatternSelector.createSelector().
       </action>
+      <action issue="LOG4J2-1697" dev="ggregory" type="add">
+        Add a SerializerBuilder to PatternLayout and deprecate PatternLayout.createSerializer().
+      </action>
     </release>
     <release version="2.7" date="2016-10-02" description="GA Release 2.7">
       <action issue="LOG4J2-1618" dev="rpopma" type="fix" due-to="Raman Gupta">