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 2016/09/04 18:38:27 UTC
[11/36] logging-log4j2 git commit: Update AsyncAppender to use
builder instead of factory
Update AsyncAppender to use builder instead of factory
As a new configurable option is added to support LOG4J2-1430, migrating to a builder will be useful for additional plugin elements/attributes.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5bce0768
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5bce0768
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5bce0768
Branch: refs/heads/master
Commit: 5bce07689b38b0edc3e68739ba43ae4883a3b512
Parents: ebc5e78
Author: Matt Sicker <bo...@gmail.com>
Authored: Thu Jun 16 11:36:06 2016 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Thu Jun 16 11:36:06 2016 -0500
----------------------------------------------------------------------
.../log4j/core/appender/AsyncAppender.java | 121 ++++++++++++++++---
1 file changed, 105 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bce0768/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index a71c4b1..2ac1ac7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -36,10 +36,11 @@ import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationException;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAliases;
-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.config.plugins.validation.constraints.Required;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.util.BlockingQueueFactoryUtil;
import org.apache.logging.log4j.core.util.Constants;
@@ -231,21 +232,12 @@ public final class AsyncAppender extends AbstractAppender {
* @param ignoreExceptions If {@code "true"} (default) exceptions encountered when appending events are logged;
* otherwise they are propagated to the caller.
* @return The AsyncAppender.
+ * @deprecated use {@link Builder} instead
*/
- @PluginFactory
- public static AsyncAppender createAppender(
- // @formatter:off
- @PluginElement("AppenderRef") final AppenderRef[] appenderRefs,
- @PluginAttribute("errorRef") @PluginAliases("error-ref") final String errorRef,
- @PluginAttribute(value = "blocking", defaultBoolean = true) final boolean blocking,
- @PluginAttribute(value = "shutdownTimeout", defaultLong = 0L) final long shutdownTimeout,
- @PluginAttribute(value = "bufferSize", defaultInt = DEFAULT_QUEUE_SIZE) final int size,
- @PluginAttribute("name") final String name,
- @PluginAttribute(value = "includeLocation", defaultBoolean = false) final boolean includeLocation,
- @PluginElement("Filter") final Filter filter,
- @PluginConfiguration final Configuration config,
- @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions) {
- // @formatter:on
+ public static AsyncAppender createAppender(final AppenderRef[] appenderRefs, final String errorRef,
+ final boolean blocking, final long shutdownTimeout, final int size,
+ final String name, final boolean includeLocation, final Filter filter,
+ final Configuration config, final boolean ignoreExceptions) {
if (name == null) {
LOGGER.error("No name provided for AsyncAppender");
return null;
@@ -258,6 +250,103 @@ public final class AsyncAppender extends AbstractAppender {
shutdownTimeout, config, includeLocation);
}
+ @PluginBuilderFactory
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ public static class Builder implements org.apache.logging.log4j.core.util.Builder<AsyncAppender> {
+
+ @PluginElement("AppenderRef")
+ @Required(message = "No appender references provided to AsyncAppender")
+ private AppenderRef[] appenderRefs;
+
+ @PluginBuilderAttribute
+ @PluginAliases("error-ref")
+ private String errorRef;
+
+ @PluginBuilderAttribute
+ private boolean blocking = true;
+
+ @PluginBuilderAttribute
+ private long shutdownTimeout = 0L;
+
+ @PluginBuilderAttribute
+ private int bufferSize = DEFAULT_QUEUE_SIZE;
+
+ @PluginBuilderAttribute
+ @Required(message = "No name provided for AsyncAppender")
+ private String name;
+
+ @PluginBuilderAttribute
+ private boolean includeLocation = false;
+
+ @PluginElement("Filter")
+ private Filter filter;
+
+ @PluginConfiguration
+ private Configuration configuration;
+
+ @PluginBuilderAttribute
+ private boolean ignoreExceptions = true;
+
+ public Builder setAppenderRefs(AppenderRef[] appenderRefs) {
+ this.appenderRefs = appenderRefs;
+ return this;
+ }
+
+ public Builder setErrorRef(String errorRef) {
+ this.errorRef = errorRef;
+ return this;
+ }
+
+ public Builder setBlocking(boolean blocking) {
+ this.blocking = blocking;
+ return this;
+ }
+
+ public Builder setShutdownTimeout(long shutdownTimeout) {
+ this.shutdownTimeout = shutdownTimeout;
+ return this;
+ }
+
+ public Builder setBufferSize(int bufferSize) {
+ this.bufferSize = bufferSize;
+ return this;
+ }
+
+ public Builder setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public Builder setIncludeLocation(boolean includeLocation) {
+ this.includeLocation = includeLocation;
+ return this;
+ }
+
+ public Builder setFilter(Filter filter) {
+ this.filter = filter;
+ return this;
+ }
+
+ public Builder setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ return this;
+ }
+
+ public Builder setIgnoreExceptions(boolean ignoreExceptions) {
+ this.ignoreExceptions = ignoreExceptions;
+ return this;
+ }
+
+ @Override
+ public AsyncAppender build() {
+ return new AsyncAppender(name, filter, appenderRefs, errorRef, bufferSize, blocking, ignoreExceptions,
+ shutdownTimeout, configuration, includeLocation);
+ }
+ }
+
/**
* Thread that calls the Appenders.
*/