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 00:36:35 UTC
logging-log4j2 git commit: [LOG4J2-1696] Add a Builder to
MarkerPatternSelector and deprecate MarkerPatternSelector.createSelector().
Repository: logging-log4j2
Updated Branches:
refs/heads/master 857bb374e -> 4577ee40a
[LOG4J2-1696] Add a Builder to MarkerPatternSelector and deprecate
MarkerPatternSelector.createSelector().
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4577ee40
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4577ee40
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4577ee40
Branch: refs/heads/master
Commit: 4577ee40a3af2d1cf96c4dbe5866755fb23b2150
Parents: 857bb37
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Nov 11 16:36:27 2016 -0800
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Nov 11 16:36:27 2016 -0800
----------------------------------------------------------------------
.../core/layout/MarkerPatternSelector.java | 120 +++++++++++++++----
src/changes/changes.xml | 3 +
2 files changed, 103 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4577ee40/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
index 17242cb..467989c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
@@ -16,6 +16,10 @@
*/
package org.apache.logging.log4j.core.layout;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.core.LogEvent;
@@ -23,23 +27,81 @@ import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.layout.ScriptPatternSelector.Builder;
import org.apache.logging.log4j.core.pattern.PatternFormatter;
import org.apache.logging.log4j.core.pattern.PatternParser;
import org.apache.logging.log4j.status.StatusLogger;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* Selects the pattern to use based on the Marker in the LogEvent.
*/
@Plugin(name = "MarkerPatternSelector", category = Node.CATEGORY, elementType = PatternSelector.ELEMENT_TYPE, printObject = true)
public class MarkerPatternSelector implements PatternSelector {
+ /**
+ * Custom MarkerPatternSelector builder. Use the {@link MarkerPatternSelector#newBuilder() builder factory method} to create this.
+ */
+ public static class Builder implements org.apache.logging.log4j.core.util.Builder<MarkerPatternSelector> {
+
+ @PluginElement("PatternMatch")
+ private PatternMatch[] properties;
+
+ @PluginBuilderAttribute("defaultPattern")
+ private String defaultPattern;
+
+ @PluginBuilderAttribute(value = "alwaysWriteExceptions")
+ private boolean alwaysWriteExceptions = true;
+
+ @PluginBuilderAttribute(value = "noConsoleNoAnsi")
+ private boolean noConsoleNoAnsi;
+
+ @PluginConfiguration
+ private Configuration configuration;
+
+ @Override
+ public MarkerPatternSelector build() {
+ if (defaultPattern == null) {
+ defaultPattern = PatternLayout.DEFAULT_CONVERSION_PATTERN;
+ }
+ if (properties == null || properties.length == 0) {
+ LOGGER.warn("No marker patterns were provided with PatternMatch");
+ return null;
+ }
+ return new MarkerPatternSelector(properties, defaultPattern, alwaysWriteExceptions, noConsoleNoAnsi,
+ configuration);
+ }
+
+ public Builder withProperties(PatternMatch[] properties) {
+ this.properties = properties;
+ return this;
+ }
+
+ public Builder withDefaultPattern(String defaultPattern) {
+ this.defaultPattern = defaultPattern;
+ return this;
+ }
+
+ public Builder withAlwaysWriteExceptions(boolean alwaysWriteExceptions) {
+ this.alwaysWriteExceptions = alwaysWriteExceptions;
+ return this;
+ }
+
+ public Builder withNoConsoleNoAnsi(boolean noConsoleNoAnsi) {
+ this.noConsoleNoAnsi = noConsoleNoAnsi;
+ return this;
+ }
+
+ public Builder withConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ return this;
+ }
+
+ }
+
private final Map<String, PatternFormatter[]> formatterMap = new HashMap<>();
private final Map<String, String> patternMap = new HashMap<>();
@@ -87,22 +149,40 @@ public class MarkerPatternSelector implements PatternSelector {
return defaultFormatters;
}
+ /**
+ * Creates a builder for a custom ScriptPatternSelector.
+ *
+ * @return a ScriptPatternSelector builder.
+ */
+ @PluginBuilderFactory
+ public static Builder newBuilder() {
+ return new Builder();
+ }
- @PluginFactory
- public static MarkerPatternSelector createSelector(@PluginElement("PatternMatch") final PatternMatch[] properties,
- @PluginAttribute("defaultPattern") String defaultPattern,
- @PluginAttribute(value = "alwaysWriteExceptions", defaultBoolean = true) final boolean alwaysWriteExceptions,
- @PluginAttribute(value = "noConsoleNoAnsi", defaultBoolean = false) final boolean noConsoleNoAnsi,
- @PluginConfiguration final Configuration config) {
- if (defaultPattern == null) {
- defaultPattern = PatternLayout.DEFAULT_CONVERSION_PATTERN;
- }
- if (properties == null || properties.length == 0) {
- LOGGER.warn("No marker patterns were provided with PatternMatch");
- return null;
- }
- return new MarkerPatternSelector(properties, defaultPattern, alwaysWriteExceptions,
- noConsoleNoAnsi, config);
+ /**
+ * Deprecated, use {@link #newBuilder()} instead.
+ * @param properties
+ * @param defaultPattern
+ * @param alwaysWriteExceptions
+ * @param noConsoleNoAnsi
+ * @param configuration
+ * @return a new MarkerPatternSelector.
+ * @deprecated Use {@link #newBuilder()} instead.
+ */
+ @Deprecated
+ public static MarkerPatternSelector createSelector(
+ final PatternMatch[] properties,
+ final String defaultPattern,
+ final boolean alwaysWriteExceptions,
+ final boolean noConsoleNoAnsi,
+ final Configuration configuration) {
+ final Builder builder = newBuilder();
+ builder.withProperties(properties);
+ builder.withDefaultPattern(defaultPattern);
+ builder.withAlwaysWriteExceptions(alwaysWriteExceptions);
+ builder.withNoConsoleNoAnsi(noConsoleNoAnsi);
+ builder.withConfiguration(configuration);
+ return builder.build();
}
@Override
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4577ee40/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bc67f37..bfe8ad3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -117,6 +117,9 @@
<action issue="LOG4J2-1695" dev="ggregory" type="add">
Add a Builder to ScriptPatternSelector and deprecate ScriptPatternSelector.createSelector().
</action>
+ <action issue="LOG4J2-1696" dev="ggregory" type="add">
+ Add a Builder to MarkerPatternSelector and deprecate MarkerPatternSelector.createSelector().
+ </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">