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">