LOG4J2-2400 - Add Redis Appender
diff --git a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/LoggingRedisPoolConfiguration.java b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/LoggingRedisPoolConfiguration.java
index ba3deac..a14c69f 100644
--- a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/LoggingRedisPoolConfiguration.java
+++ b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/LoggingRedisPoolConfiguration.java
@@ -18,9 +18,9 @@
 package org.apache.logging.log4j.redis.appender;
 
 import org.apache.logging.log4j.core.Core;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.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.plugins.PluginFactory;
 import redis.clients.jedis.JedisPoolConfig;
 
 /**
@@ -41,12 +41,12 @@
     /**
      * Creates a LoggingRedisPoolConfiguration from standard pool parameters.
      */
-    @PluginBuilderFactory
+    @PluginFactory
     public static Builder newBuilder() {
         return new LoggingRedisPoolConfiguration.Builder();
     }
 
-    private static class Builder implements org.apache.logging.log4j.core.util.Builder<LoggingRedisPoolConfiguration> {
+    private static class Builder implements org.apache.logging.log4j.plugins.util.Builder<LoggingRedisPoolConfiguration> {
 
         @PluginBuilderAttribute("minIdle")
         private int minIdle = JedisPoolConfig.DEFAULT_MIN_IDLE;
diff --git a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
index 4a19717..557ed6e 100644
--- a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
+++ b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
@@ -17,16 +17,19 @@
 
 package org.apache.logging.log4j.redis.appender;
 
-import org.apache.logging.log4j.LoggingException;
-import org.apache.logging.log4j.core.*;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.StringLayout;
 import org.apache.logging.log4j.core.appender.AbstractAppender;
 import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-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.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.validation.constraints.Required;
+import org.apache.logging.log4j.plugins.Node;
+import org.apache.logging.log4j.plugins.Plugin;
+import org.apache.logging.log4j.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.plugins.PluginElement;
+import org.apache.logging.log4j.plugins.PluginFactory;
+import org.apache.logging.log4j.plugins.validation.constraints.Required;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.spi.AbstractLogger;
 
@@ -67,7 +70,7 @@
      * @param <B> The type to build
      */
     public static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B>
-            implements org.apache.logging.log4j.core.util.Builder<RedisAppender> {
+            implements org.apache.logging.log4j.plugins.util.Builder<RedisAppender> {
 
         private final String KEY_SEPARATOR = ",";
 
@@ -187,7 +190,7 @@
      * Creates a builder for a RedisAppender.
      * @return a builder for a RedisAppender.
      */
-    @PluginBuilderFactory
+    @PluginFactory
     public static <B extends Builder<B>> B newBuilder() {
         return new Builder<B>().asBuilder();
     }
diff --git a/log4j-redis/src/test/java/org/apache/logging/log4j/redis/appender/RedisAppenderTest.java b/log4j-redis/src/test/java/org/apache/logging/log4j/redis/appender/RedisAppenderTest.java
index 530a192..3236c79 100644
--- a/log4j-redis/src/test/java/org/apache/logging/log4j/redis/appender/RedisAppenderTest.java
+++ b/log4j-redis/src/test/java/org/apache/logging/log4j/redis/appender/RedisAppenderTest.java
@@ -53,12 +53,12 @@
         initMocks();
 
         appender = new AppenderTestRedisAppenderBuilder()
-                        .withName("RedisAppender")
+                        .setName("RedisAppender")
                         .setKeys(DESTINATION_KEY)
                         .setHost(HOST)
                         .setPort(PORT)
                         .setImmediateFlush(true)
-                        .withLayout(PatternLayout.createDefaultLayout())
+                        .setLayout(PatternLayout.createDefaultLayout())
                         .build();
         logEvent = createLogEvent();
     }
@@ -91,13 +91,13 @@
     @Test
     public void testQueuesLogEvents() {
         appender = new AppenderTestRedisAppenderBuilder()
-                .withName("RedisAppender")
+                .setName("RedisAppender")
                 .setKeys(DESTINATION_KEY)
                 .setHost(HOST)
                 .setPort(PORT)
                 .setQueueCapacity(2)
                 .setImmediateFlush(false)
-                .withLayout(PatternLayout.newBuilder().withPattern("%m").build())
+                .setLayout(PatternLayout.newBuilder().setPattern("%m").build())
                 .build();
 
         appender.append(logEvent);
@@ -107,13 +107,13 @@
     @Test
     public void testAttemptsSendWhenQueueReachesCapacity() {
         appender = new AppenderTestRedisAppenderBuilder()
-                .withName("RedisAppender")
+                .setName("RedisAppender")
                 .setKeys(DESTINATION_KEY)
                 .setHost(HOST)
                 .setPort(PORT)
                 .setQueueCapacity(1)
                 .setImmediateFlush(false)
-                .withLayout(PatternLayout.newBuilder().withPattern("%m").build())
+                .setLayout(PatternLayout.newBuilder().setPattern("%m").build())
                 .build();
 
         appender.append(logEvent);
@@ -125,13 +125,13 @@
     @Test
     public void testFlushesQueueAtExceededCapacity() {
         appender = new AppenderTestRedisAppenderBuilder()
-                .withName("RedisAppender")
+                .setName("RedisAppender")
                 .setKeys(DESTINATION_KEY)
                 .setHost(HOST)
                 .setPort(PORT)
                 .setQueueCapacity(1)
                 .setImmediateFlush(false)
-                .withLayout(PatternLayout.newBuilder().withPattern("%m").build())
+                .setLayout(PatternLayout.newBuilder().setPattern("%m").build())
                 .build();
 
         appender.append(logEvent);
@@ -142,12 +142,12 @@
     @Test
     public void testFlushesQueueAtEndOfBatch() {
         appender = new AppenderTestRedisAppenderBuilder()
-                .withName("RedisAppender")
+                .setName("RedisAppender")
                 .setKeys(DESTINATION_KEY)
                 .setHost(HOST)
                 .setPort(PORT)
                 .setImmediateFlush(false)
-                .withLayout(PatternLayout.newBuilder().withPattern("%m").build())
+                .setLayout(PatternLayout.newBuilder().setPattern("%m").build())
                 .build();
         logEvent = createPartialLogEvent().setEndOfBatch(true).build();
 
@@ -158,12 +158,12 @@
     @Test
     public void testFlushesQueueOnAppenderStop() {
         appender = new AppenderTestRedisAppenderBuilder()
-                .withName("RedisAppender")
+                .setName("RedisAppender")
                 .setKeys(DESTINATION_KEY)
                 .setHost(HOST)
                 .setPort(PORT)
                 .setImmediateFlush(false)
-                .withLayout(PatternLayout.newBuilder().withPattern("%m").build())
+                .setLayout(PatternLayout.newBuilder().setPattern("%m").build())
                 .build();
         appender.append(logEvent);
         Mockito.verify(manager, Mockito.times(0)).sendBulk(any());
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f6e7e53..ce80579 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,6 +31,9 @@
          - "remove" - Removed
     -->
     <release version="3.0.0" date="2019-xx-xx" description="GA Release 3.0.0">
+      <action issue="LOG4J2-2400" dev="rgoers" type="add" due-to="Natalie Meurer">
+        Add Redis Appender.
+      </action>
       <action issue="LOG4J2-2749" dev="vy" type="fix" due-to="Oleksii Khomchenko">
         JsonLayout KeyValuePair should discard blank JSON keys.
       </action>