You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/09/14 07:25:56 UTC
git commit: Add builder class for ConsoleAppender.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 5533cae78 -> 237ec9929
Add builder class for ConsoleAppender.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/237ec992
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/237ec992
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/237ec992
Branch: refs/heads/master
Commit: 237ec992946139bcbcc298eee1f68494b078fa86
Parents: 5533cae
Author: Matt Sicker <ma...@apache.org>
Authored: Sun Sep 14 00:25:30 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Sun Sep 14 00:25:30 2014 -0500
----------------------------------------------------------------------
.../log4j/core/appender/ConsoleAppender.java | 74 +++++++++++++++++++-
.../core/config/AbstractConfiguration.java | 3 +-
.../log4j/core/config/DefaultConfiguration.java | 3 +-
.../core/appender/ConsoleAppenderTest.java | 8 +--
.../net/server/AbstractSocketServerTest.java | 3 +-
5 files changed, 79 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/237ec992/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
index 6522510..54d837e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
@@ -28,8 +28,10 @@ import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
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.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.config.plugins.validation.constraints.RequiresNonNull;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.util.Booleans;
import org.apache.logging.log4j.core.util.Loader;
@@ -79,7 +81,6 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
* they are propagated to the caller.
* @return The ConsoleAppender.
*/
- @PluginFactory
public static ConsoleAppender createAppender(
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filter") final Filter filter,
@@ -100,6 +101,75 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
return new ConsoleAppender(name, layout, filter, getManager(isFollow, target, layout), ignoreExceptions);
}
+ public static ConsoleAppender createDefaultAppenderForLayout(final Layout<? extends Serializable> layout) {
+ // this method cannot use the builder class without introducing an infinite loop due to DefaultConfiguration
+ return new ConsoleAppender("Console", layout, null, getManager(false, Target.SYSTEM_OUT, layout), true);
+ }
+
+ @PluginBuilderFactory
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ public static class Builder implements org.apache.logging.log4j.core.util.Builder<ConsoleAppender> {
+
+ @PluginElement("Layout")
+ @RequiresNonNull
+ private Layout<? extends Serializable> layout = PatternLayout.createDefaultLayout();
+
+ @PluginElement("Filter")
+ private Filter filter;
+
+ @PluginBuilderAttribute
+ @RequiresNonNull
+ private Target target = Target.SYSTEM_OUT;
+
+ @PluginBuilderAttribute
+ @RequiresNonNull
+ private String name;
+
+ @PluginBuilderAttribute
+ private boolean follow = false;
+
+ @PluginBuilderAttribute
+ private boolean ignoreExceptions = true;
+
+ public Builder setLayout(final Layout<? extends Serializable> layout) {
+ this.layout = layout;
+ return this;
+ }
+
+ public Builder setFilter(final Filter filter) {
+ this.filter = filter;
+ return this;
+ }
+
+ public Builder setTarget(final Target target) {
+ this.target = target;
+ return this;
+ }
+
+ public Builder setName(final String name) {
+ this.name = name;
+ return this;
+ }
+
+ public Builder setFollow(final boolean follow) {
+ this.follow = follow;
+ return this;
+ }
+
+ public Builder setIgnoreExceptions(final boolean ignoreExceptions) {
+ this.ignoreExceptions = ignoreExceptions;
+ return this;
+ }
+
+ @Override
+ public ConsoleAppender build() {
+ return new ConsoleAppender(name, layout, filter, getManager(follow, target, layout), ignoreExceptions);
+ }
+ }
+
private static OutputStreamManager getManager(final boolean follow, final Target target, final Layout<? extends Serializable> layout) {
final String type = target.name();
final OutputStream os = getOutputStream(follow, target);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/237ec992/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 6e9ed34..3c4dcca 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -403,8 +403,7 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement
.withPattern(DefaultConfiguration.DEFAULT_PATTERN)
.withConfiguration(this)
.build();
- final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
- "true");
+ final Appender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
appender.start();
addAppender(appender);
final LoggerConfig root = getRootLogger();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/237ec992/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
index a7d4116..d0b17ee 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
@@ -59,8 +59,7 @@ public class DefaultConfiguration extends AbstractConfiguration {
.withPattern(DEFAULT_PATTERN)
.withConfiguration(this)
.build();
- final Appender appender =
- ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
+ final Appender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
appender.start();
addAppender(appender);
final LoggerConfig root = getRootLogger();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/237ec992/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
index d0bea86..78213d1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
@@ -20,10 +20,8 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.message.SimpleMessage;
import org.junit.AfterClass;
@@ -52,8 +50,10 @@ public class ConsoleAppenderTest {
@Test
public void testFollow() {
final PrintStream ps = System.out;
- final Layout<String> layout = PatternLayout.createDefaultLayout();
- final ConsoleAppender app = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "true", "false");
+ final ConsoleAppender app = ConsoleAppender.newBuilder()
+ .setFollow(true)
+ .setIgnoreExceptions(false)
+ .build();
app.start();
final LogEvent event = new Log4jLogEvent("TestLogger", null, ConsoleAppenderTest.class.getName(), Level.INFO,
new SimpleMessage("Test"), null);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/237ec992/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java
index 6f62008..680ac37 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java
@@ -176,8 +176,7 @@ public abstract class AbstractSocketServerTest {
final ListAppender listAppender = new ListAppender("Events", serverFilter, null, false, false);
listAppender.start();
final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
- final ConsoleAppender console = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
- "true");
+ final ConsoleAppender console = ConsoleAppender.createDefaultAppenderForLayout(layout);
final Logger serverLogger = ctx.getLogger(this.getClass().getName());
serverLogger.addAppender(console);
serverLogger.setAdditive(false);