You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/12 12:12:30 UTC

[44/50] logging-log4j2 git commit: FileAppender uses inherited Builders.

FileAppender uses inherited Builders.

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

Branch: refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure
Commit: 7b973efa8a02666ee00f6031c795a17181e15dba
Parents: 2207cae
Author: Gary Gregory <gg...@apache.org>
Authored: Wed Aug 10 21:19:57 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Wed Aug 10 21:19:57 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/FileAppender.java       | 118 +++++--------------
 1 file changed, 29 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7b973efa/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
index a026850..e93e05f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
@@ -27,9 +27,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 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.validation.constraints.Required;
-import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.core.util.Integers;
@@ -42,8 +40,12 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
 
     /**
      * Builds FileAppender instances.
+     * 
+     * @param <B>
+     *            This builder class
      */
-    public static class Builder implements org.apache.logging.log4j.core.util.Builder<FileAppender> {
+    public static class Builder<B extends Builder<B>> extends AbstractOutputStreamAppender.Builder<B>
+            implements org.apache.logging.log4j.core.util.Builder<FileAppender> {
 
         @PluginBuilderAttribute
         @Required
@@ -56,27 +58,11 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
         private boolean locking;
 
         @PluginBuilderAttribute
-        @Required
-        private String name;
-
-        @PluginBuilderAttribute
-        private boolean immediateFlush = true;
-
-        @PluginBuilderAttribute
-        private boolean ignoreExceptions = true;
-
-        @PluginBuilderAttribute
         private boolean bufferedIo = true;
 
         @PluginBuilderAttribute
         private int bufferSize = DEFAULT_BUFFER_SIZE;
 
-        @PluginElement("Layout")
-        private Layout<? extends Serializable> layout;
-
-        @PluginElement("Filter")
-        private Filter filter;
-
         @PluginBuilderAttribute
         private boolean advertise;
 
@@ -98,18 +84,16 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             if (!bufferedIo && bufferSize > 0) {
                 LOGGER.warn("The bufferSize is set to {} but bufferedIo is not true: {}", bufferSize, bufferedIo);
             }
-            if (layout == null) {
-                layout = PatternLayout.createDefaultLayout();
-            }
+            Layout<? extends Serializable> layout = getOrCreateLayout();
 
             final FileManager manager = FileManager.getFileManager(fileName, append, locking, bufferedIo, lazyCreate,
-                    advertiseUri, layout, bufferSize, immediateFlush);
+                    advertiseUri, layout, bufferSize, isImmediateFlush());
             if (manager == null) {
                 return null;
             }
 
-            return new FileAppender(name, layout, filter, manager, fileName, ignoreExceptions,
-                    !bufferedIo || immediateFlush, advertise ? config.getAdvertiser() : null);
+            return new FileAppender(getName(), layout, getFilter(), manager, fileName, isIgnoreExceptions(),
+                    !bufferedIo || isImmediateFlush(), advertise ? config.getAdvertiser() : null);
         }
 
         public String getAdvertiseUri() {
@@ -128,18 +112,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return fileName;
         }
 
-        public Filter getFilter() {
-            return filter;
-        }
-
-        public Layout<? extends Serializable> getLayout() {
-            return layout;
-        }
-
-        public String getName() {
-            return name;
-        }
-
         public boolean isAdvertise() {
             return advertise;
         }
@@ -152,14 +124,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return bufferedIo;
         }
 
-        public boolean isIgnoreExceptions() {
-            return ignoreExceptions;
-        }
-
-        public boolean isImmediateFlush() {
-            return immediateFlush;
-        }
-
         public boolean isLazyCreate() {
             return lazyCreate;
         }
@@ -168,75 +132,51 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return locking;
         }
 
-        public Builder withAdvertise(final boolean advertise) {
+        public B withAdvertise(final boolean advertise) {
             this.advertise = advertise;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withAdvertiseUri(final String advertiseUri) {
+        public B withAdvertiseUri(final String advertiseUri) {
             this.advertiseUri = advertiseUri;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withAppend(final boolean append) {
+        public B withAppend(final boolean append) {
             this.append = append;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withBufferedIo(final boolean bufferedIo) {
+        public B withBufferedIo(final boolean bufferedIo) {
             this.bufferedIo = bufferedIo;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withBufferSize(final int bufferSize) {
+        public B withBufferSize(final int bufferSize) {
             this.bufferSize = bufferSize;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withConfig(final Configuration config) {
+        public B withConfig(final Configuration config) {
             this.config = config;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withFileName(final String fileName) {
+        public B withFileName(final String fileName) {
             this.fileName = fileName;
-            return this;
-        }
-
-        public Builder withFilter(final Filter filter) {
-            this.filter = filter;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withIgnoreExceptions(final boolean ignoreExceptions) {
-            this.ignoreExceptions = ignoreExceptions;
-            return this;
-        }
-
-        public Builder withImmediateFlush(final boolean immediateFlush) {
-            this.immediateFlush = immediateFlush;
-            return this;
-        }
-
-        public Builder withLayout(final Layout<? extends Serializable> layout) {
-            this.layout = layout;
-            return this;
-        }
-
-        public Builder withLazyCreate(final boolean lazyCreate) {
+        public B withLazyCreate(final boolean lazyCreate) {
             this.lazyCreate = lazyCreate;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withLocking(final boolean locking) {
+        public B withLocking(final boolean locking) {
             this.locking = locking;
-            return this;
+            return asBuilder();
         }
 
-        public Builder withName(final String name) {
-            this.name = name;
-            return this;
-        }
     }
     
     private static final int DEFAULT_BUFFER_SIZE = 8192;
@@ -298,8 +238,8 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
     }
     
     @PluginBuilderFactory
-    public static Builder newBuilder() {
-        return new Builder();
+    public static <B extends Builder<B>> B newBuilder() {
+        return new Builder<B>().asBuilder();
     }
     
     private final String fileName;