Repository: logging-log4j2
Updated Branches:
  refs/heads/release-2.x 93e160bb2 -> 74bc7e250


[LOG4J2-2491] Allow all Appenders to optionally carry a Property array.


Allow all Appenders to optionally carry a Property array. This allows
3rd party tooling to read and write properties for their own use.

This refactoring pulls up the properties instance variable and methods
from org.apache.logging.log4j.kafka.appender.KafkaAppender.Builder to
org.apache.logging.log4j.core.filter.AbstractFilterable.Builder.

Also deprecate withFilter() in favor of setFilter().

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

Branch: refs/heads/release-2.x
Commit: 74bc7e2507c3f5b707a29a50fa679df7eb6ae0b9
Parents: 93e160b
Author: Gary Gregory <[email protected]>
Authored: Mon Oct 29 11:16:57 2018 -0600
Committer: Gary Gregory <[email protected]>
Committed: Mon Oct 29 11:16:57 2018 -0600

----------------------------------------------------------------------
 .../log4j/core/appender/FileAppender.java       | 15 ++--
 .../core/appender/MemoryMappedFileAppender.java | 11 ++-
 .../core/appender/RandomAccessFileAppender.java | 13 ++-
 .../core/appender/RollingFileAppender.java      | 17 ++--
 .../RollingRandomAccessFileAppender.java        |  3 +-
 .../log4j/core/appender/SocketAppender.java     |  7 +-
 .../log4j/core/appender/SyslogAppender.java     | 21 +++--
 .../core/appender/db/jdbc/JdbcAppender.java     | 13 ++-
 .../core/appender/mom/kafka/KafkaAppender.java  | 13 +--
 .../log4j/core/filter/AbstractFilterable.java   | 89 ++++++++++++--------
 .../log4j/web/appender/ServletAppender.java     |  3 +-
 src/changes/changes.xml                         |  3 +
 12 files changed, 106 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/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 8e5736f..034fb15 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
@@ -226,14 +226,13 @@ public final class FileAppender extends 
AbstractOutputStreamAppender<FileManager
             final String advertiseUri,
             final Configuration config) {
         return FileAppender.<B>newBuilder()
-            .withAdvertise(Boolean.parseBoolean(advertise))
-            .withAdvertiseUri(advertiseUri)
-            .withAppend(Booleans.parseBoolean(append, true))
-            .withBufferedIo(Booleans.parseBoolean(bufferedIo, true))
-            .withBufferSize(Integers.parseInt(bufferSizeStr, 
DEFAULT_BUFFER_SIZE))
-            .setConfiguration(config)
-            .withFileName(fileName)
-            .withFilter(filter)
+        .withAdvertise(Boolean.parseBoolean(advertise))
+        .withAdvertiseUri(advertiseUri)
+        .withAppend(Booleans.parseBoolean(append, true))
+        .withBufferedIo(Booleans.parseBoolean(bufferedIo, true))
+        .withBufferSize(Integers.parseInt(bufferSizeStr, DEFAULT_BUFFER_SIZE))
+        .setConfiguration(config)
+        .withFileName(fileName).setFilter(filter)
             .withIgnoreExceptions(Booleans.parseBoolean(ignoreExceptions, 
true))
             .withImmediateFlush(Booleans.parseBoolean(immediateFlush, true))
             .withLayout(layout)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
index 17f64ee..a6162bd 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
@@ -233,12 +233,11 @@ public final class MemoryMappedFileAppender extends 
AbstractOutputStreamAppender
 
         // @formatter:off
         return MemoryMappedFileAppender.<B>newBuilder()
-            .setAdvertise(isAdvertise)
-            .setAdvertiseURI(advertiseURI)
-            .setAppend(isAppend)
-            .setConfiguration(config)
-            .setFileName(fileName)
-            .withFilter(filter)
+        .setAdvertise(isAdvertise)
+        .setAdvertiseURI(advertiseURI)
+        .setAppend(isAppend)
+        .setConfiguration(config)
+        .setFileName(fileName).setFilter(filter)
             .withIgnoreExceptions(ignoreExceptions)
             .withImmediateFlush(isImmediateFlush)
             .withLayout(layout)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
index d7ec920..0ea8d99 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
@@ -222,13 +222,12 @@ public final class RandomAccessFileAppender extends 
AbstractOutputStreamAppender
         final int bufferSize = Integers.parseInt(bufferSizeStr, 
RandomAccessFileManager.DEFAULT_BUFFER_SIZE);
 
         return RandomAccessFileAppender.<B>newBuilder()
-            .setAdvertise(isAdvertise)
-            .setAdvertiseURI(advertiseURI)
-            .setAppend(isAppend)
-            .withBufferSize(bufferSize)
-            .setConfiguration(configuration)
-            .setFileName(fileName)
-            .withFilter(filter)
+        .setAdvertise(isAdvertise)
+        .setAdvertiseURI(advertiseURI)
+        .setAppend(isAppend)
+        .withBufferSize(bufferSize)
+        .setConfiguration(configuration)
+        .setFileName(fileName).setFilter(filter)
             .withIgnoreExceptions(ignoreExceptions)
             .withImmediateFlush(isFlush)
             .withLayout(layout)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
index def63a4..cb9303a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
@@ -378,15 +378,14 @@ public final class RollingFileAppender extends 
AbstractOutputStreamAppender<Roll
         final int bufferSize = Integers.parseInt(bufferSizeStr, 
DEFAULT_BUFFER_SIZE);
         // @formatter:off
         return RollingFileAppender.<B>newBuilder()
-                .withAdvertise(Boolean.parseBoolean(advertise))
-                .withAdvertiseUri(advertiseUri)
-                .withAppend(Booleans.parseBoolean(append, true))
-                .withBufferedIo(Booleans.parseBoolean(bufferedIO, true))
-                .withBufferSize(bufferSize)
-                .setConfiguration(config)
-                .withFileName(fileName)
-                .withFilePattern(filePattern)
-                .withFilter(filter)
+        .withAdvertise(Boolean.parseBoolean(advertise))
+        .withAdvertiseUri(advertiseUri)
+        .withAppend(Booleans.parseBoolean(append, true))
+        .withBufferedIo(Booleans.parseBoolean(bufferedIO, true))
+        .withBufferSize(bufferSize)
+        .setConfiguration(config)
+        .withFileName(fileName)
+        .withFilePattern(filePattern).setFilter(filter)
                 .withIgnoreExceptions(Booleans.parseBoolean(ignore, true))
                 .withImmediateFlush(Booleans.parseBoolean(immediateFlush, 
true))
                 .withLayout(layout)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
index f43ccd0..a3d8611 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
@@ -334,8 +334,7 @@ public final class RollingRandomAccessFileAppender extends 
AbstractOutputStreamA
            .withBufferSize(bufferSize)
            .setConfiguration(configuration)
            .withFileName(fileName)
-           .withFilePattern(filePattern)
-           .withFilter(filter)
+           .withFilePattern(filePattern).setFilter(filter)
            .withIgnoreExceptions(isIgnoreExceptions)
            .withImmediateFlush(isImmediateFlush)
            .withLayout(layout)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
index b1d167c..ce4d254 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
@@ -317,10 +317,9 @@ public class SocketAppender extends 
AbstractOutputStreamAppender<AbstractSocketM
 
         // @formatter:off
         return newBuilder()
-            .withAdvertise(advertise)
-            .setConfiguration(configuration)
-            .withConnectTimeoutMillis(connectTimeoutMillis)
-            .withFilter(filter)
+        .withAdvertise(advertise)
+        .setConfiguration(configuration)
+        .withConnectTimeoutMillis(connectTimeoutMillis).setFilter(filter)
             .withHost(host)
             .withIgnoreExceptions(ignoreExceptions)
             .withImmediateFail(immediateFail)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
index 26b435f..2b14598 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
@@ -387,17 +387,16 @@ public class SyslogAppender extends SocketAppender {
 
         // @formatter:off
         return SyslogAppender.<B>newSyslogAppenderBuilder()
-                .withHost(host)
-                .withPort(port)
-                .withProtocol(EnglishEnums.valueOf(Protocol.class, 
protocolStr))
-                .withSslConfiguration(sslConfiguration)
-                .withConnectTimeoutMillis(connectTimeoutMillis)
-                .withReconnectDelayMillis(reconnectDelayMillis)
-                .withImmediateFail(immediateFail)
-                .withName(appName)
-                .withImmediateFlush(immediateFlush)
-                .withIgnoreExceptions(ignoreExceptions)
-                .withFilter(filter)
+        .withHost(host)
+        .withPort(port)
+        .withProtocol(EnglishEnums.valueOf(Protocol.class, protocolStr))
+        .withSslConfiguration(sslConfiguration)
+        .withConnectTimeoutMillis(connectTimeoutMillis)
+        .withReconnectDelayMillis(reconnectDelayMillis)
+        .withImmediateFail(immediateFail)
+        .withName(appName)
+        .withImmediateFlush(immediateFlush)
+        .withIgnoreExceptions(ignoreExceptions).setFilter(filter)
                 .setConfiguration(configuration)
                 .withAdvertise(advertise)
                 .setFacility(facility)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
index 974d87e..a89e5e0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
@@ -86,13 +86,12 @@ public final class JdbcAppender extends 
AbstractDatabaseAppender<JdbcDatabaseMan
         final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
 
         return JdbcAppender.<B>newBuilder()
-            .setBufferSize(bufferSizeInt)
-            .setColumnConfigs(columnConfigs)
-            .setConnectionSource(connectionSource)
-            .setTableName(tableName)
-            .withName(name)
-            .withIgnoreExceptions(ignoreExceptions)
-            .withFilter(filter)
+        .setBufferSize(bufferSizeInt)
+        .setColumnConfigs(columnConfigs)
+        .setConnectionSource(connectionSource)
+        .setTableName(tableName)
+        .withName(name)
+        .withIgnoreExceptions(ignoreExceptions).setFilter(filter)
             .build();
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
index f7d50af..e4d8e6b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
@@ -60,9 +60,6 @@ public final class KafkaAppender extends AbstractAppender {
         @PluginAttribute(value = "syncSend", defaultBoolean = true)
         private boolean syncSend;
 
-        @PluginElement("Properties") 
-        private Property[] properties;
-
         @SuppressWarnings("resource")
         @Override
         public KafkaAppender build() {
@@ -72,7 +69,7 @@ public final class KafkaAppender extends AbstractAppender {
                 return null;
             }
             final KafkaManager kafkaManager =
-                    new KafkaManager(getConfiguration().getLoggerContext(), 
getName(), topic, syncSend, properties, key);
+                    new KafkaManager(getConfiguration().getLoggerContext(), 
getName(), topic, syncSend, getProperties(), key);
             return new KafkaAppender(getName(), layout, getFilter(), 
isIgnoreExceptions(), kafkaManager);
         }
 
@@ -84,10 +81,6 @@ public final class KafkaAppender extends AbstractAppender {
             return syncSend;
         }
 
-        public Property[] getProperties() {
-            return properties;
-        }
-
         public B setTopic(final String topic) {
             this.topic = topic;
             return asBuilder();
@@ -98,10 +91,6 @@ public final class KafkaAppender extends AbstractAppender {
             return asBuilder();
         }
 
-        public B setProperties(final Property[] properties) {
-            this.properties = properties;
-            return asBuilder();
-        }
     }
     
     @Deprecated

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
index 3bd20ce..34234ff 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LifeCycle2;
 import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 
 /**
@@ -40,20 +41,40 @@ public abstract class AbstractFilterable extends 
AbstractLifeCycle implements Fi
         @PluginElement("Filter")
         private Filter filter;
 
-        public Filter getFilter() {
-            return filter;
-        }
+        @PluginElement("Properties")
+        private Property[] properties;
 
         @SuppressWarnings("unchecked")
         public B asBuilder() {
             return (B) this;
         }
 
-        public B withFilter(final Filter filter) {
+        public Filter getFilter() {
+            return filter;
+        }
+
+        public Property[] getProperties() {
+            return properties;
+        }
+
+        public B setFilter(final Filter filter) {
             this.filter = filter;
             return asBuilder();
         }
 
+        public B setProperties(Property[] properties) {
+            this.properties = properties;
+            return asBuilder();
+        }
+
+        /**
+         * @deprecated Use {@link #setFilter(Filter)}.
+         */
+        @Deprecated
+        public B withFilter(final Filter filter) {
+            return setFilter(filter);
+        }
+
     }
 
     /**
@@ -61,20 +82,11 @@ public abstract class AbstractFilterable extends 
AbstractLifeCycle implements Fi
      */
     private volatile Filter filter;
 
-    protected AbstractFilterable(final Filter filter) {
-        this.filter = filter;
-    }
-
     protected AbstractFilterable() {
     }
 
-    /**
-     * Returns the Filter.
-     * @return the Filter or null.
-     */
-    @Override
-    public Filter getFilter() {
-        return filter;
+    protected AbstractFilterable(final Filter filter) {
+        this.filter = filter;
     }
 
     /**
@@ -97,6 +109,34 @@ public abstract class AbstractFilterable extends 
AbstractLifeCycle implements Fi
     }
 
     /**
+     * Returns the Filter.
+     * @return the Filter or null.
+     */
+    @Override
+    public Filter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Determines if a Filter is present.
+     * @return false if no Filter is present.
+     */
+    @Override
+    public boolean hasFilter() {
+        return filter != null;
+    }
+
+    /**
+     * Determine if the LogEvent should be processed or ignored.
+     * @param event The LogEvent.
+     * @return true if the LogEvent should be processed.
+     */
+    @Override
+    public boolean isFiltered(final LogEvent event) {
+        return filter != null && filter.filter(event) == Filter.Result.DENY;
+    }
+
+    /**
      * Removes a Filter.
      * @param filter The Filter to remove.
      */
@@ -122,15 +162,6 @@ public abstract class AbstractFilterable extends 
AbstractLifeCycle implements Fi
     }
 
     /**
-     * Determines if a Filter is present.
-     * @return false if no Filter is present.
-     */
-    @Override
-    public boolean hasFilter() {
-        return filter != null;
-    }
-
-    /**
      * Make the Filter available for use.
      */
     @Override
@@ -172,14 +203,4 @@ public abstract class AbstractFilterable extends 
AbstractLifeCycle implements Fi
         return stopped;
     }
 
-    /**
-     * Determine if the LogEvent should be processed or ignored.
-     * @param event The LogEvent.
-     * @return true if the LogEvent should be processed.
-     */
-    @Override
-    public boolean isFiltered(final LogEvent event) {
-        return filter != null && filter.filter(event) == Filter.Result.DENY;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
 
b/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
index b7e30c2..6dace71 100644
--- 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
+++ 
b/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
@@ -121,8 +121,7 @@ public class ServletAppender extends AbstractAppender {
     public static ServletAppender createAppender(final Layout<? extends 
Serializable> layout, final Filter filter,
             final String name, final boolean ignoreExceptions) {
         // @formatter:off
-       return newBuilder()
-                       .withFilter(filter)
+       return newBuilder().setFilter(filter)
                        .withIgnoreExceptions(ignoreExceptions)
                        .withLayout(layout)
                        .withName(name)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74bc7e25/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bf0f5d6..4298dd2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -106,6 +106,9 @@
       <action issue="LOG4J2-2489" dev="ggregory" type="update">
         JDBC Appender should release parameter resources ASAP.
       </action>
+      <action issue="LOG4J2-2491" dev="ggregory" type="update">
+        Allow all Appenders to optionally carry a Property array.
+      </action>
     </release>
     <release version="2.11.1" date="2018-07-22" description="GA Release 
2.11.1">
       <action issue="LOG4J2-2389" dev="rgoers" type="fix" due-to="Liu Wen">

Reply via email to