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

[01/19] logging-log4j2 git commit: Better method name in JUnit rule.

Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1553 7ad148998 -> a0d08f3f7


Better method name in JUnit rule.

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

Branch: refs/heads/LOG4J2-1553
Commit: 9152a8201a47b4ac2f16488d2f25a0ee895ac8e5
Parents: 94072a1
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 14:04:44 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 14:04:44 2016 -0700

----------------------------------------------------------------------
 .../apache/logging/log4j/core/DeadlockTest.java |  2 +-
 .../logging/log4j/core/LoggerUpdateTest.java    |  2 +-
 .../appender/JsonCompleteFileAppenderTest.java  |  2 +-
 .../appender/RandomAccessFileAppenderTests.java |  2 +-
 .../RollingAppenderCronOnceADayTest.java        |  2 +-
 .../rolling/RollingAppenderCronTest.java        |  2 +-
 .../routing/PropertiesRoutingAppenderTest.java  |  2 +-
 .../appender/routing/RoutingAppenderTest.java   |  2 +-
 .../routing/RoutingAppenderWithPurgingTest.java |  2 +-
 .../routing/RoutingDefaultAppenderTest.java     |  2 +-
 .../log4j/core/config/ConfigurationTest.java    |  2 +-
 .../core/config/CustomConfigurationTest.java    |  2 +-
 .../core/config/MissingRootLoggerTest.java      |  2 +-
 .../logging/log4j/core/config/XIncludeTest.java |  2 +-
 .../core/util/ShutdownCallbackRegistryTest.java |  2 +-
 .../logging/log4j/junit/LoggerContextRule.java  | 22 ++++++++++----------
 16 files changed, 26 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/DeadlockTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/DeadlockTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/DeadlockTest.java
index b754636..c3cc5b4 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/DeadlockTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/DeadlockTest.java
@@ -32,6 +32,6 @@ public class DeadlockTest {
 
     @Test
     public void deadlockOnReconfigure() {
-        context.getContext().reconfigure();
+        context.getLoggerContext().reconfigure();
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerUpdateTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerUpdateTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerUpdateTest.java
index 574236c..572e392 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerUpdateTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerUpdateTest.java
@@ -69,7 +69,7 @@ public class LoggerUpdateTest {
 
     @Test
     public void testUpdateLoggersPropertyListeners() throws Exception {
-        final LoggerContext ctx = context.getContext();
+        final LoggerContext ctx = context.getLoggerContext();
         ctx.addPropertyChangeListener(new PropertyChangeListener() {
             @Override
             public void propertyChange(final PropertyChangeEvent evt) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java
index 47cb060..aad7d27 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java
@@ -65,7 +65,7 @@ public class JsonCompleteFileAppenderTest {
         final String logMsg = "Message flushed with immediate flush=true";
         logger.info(logMsg);
         logger.error(logMsg, new IllegalArgumentException("badarg"));
-        this.loggerContextRule.getContext().stop(); // stops async thread
+        this.loggerContextRule.getLoggerContext().stop(); // stops async thread
         String line1;
         String line2;
         String line3;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppenderTests.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppenderTests.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppenderTests.java
index 7f6f03d..3044c44 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppenderTests.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppenderTests.java
@@ -77,7 +77,7 @@ public class RandomAccessFileAppenderTests {
         final Logger logger = this.init.getLogger("com.foo.Bar");
         final String message = "This is a test log message brought to you by Slurm.";
         logger.info(message);
-        this.init.getContext().stop(); // stop async thread
+        this.init.getLoggerContext().stop(); // stop async thread
 
         String line;
         try (final BufferedReader reader = new BufferedReader(new FileReader(this.logFile))) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronOnceADayTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronOnceADayTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronOnceADayTest.java
index b6ee09d..f995990 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronOnceADayTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronOnceADayTest.java
@@ -88,7 +88,7 @@ public class RollingAppenderCronOnceADayTest {
         assertTrue("Log file does not exist", file.exists());
         logger.debug("This is test message number 1, waiting for rolling");
 
-        final RollingFileAppender app = (RollingFileAppender) loggerContextRule.getContext().getConfiguration().getAppender("RollingFile");
+        final RollingFileAppender app = (RollingFileAppender) loggerContextRule.getLoggerContext().getConfiguration().getAppender("RollingFile");
         final TriggeringPolicy policy = app.getManager().getTriggeringPolicy();
         assertNotNull("No triggering policy", policy);
         assertTrue("Incorrect policy type", policy instanceof CronTriggeringPolicy);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronTest.java
index d04de19..6c2ab9a 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderCronTest.java
@@ -94,7 +94,7 @@ public class RollingAppenderCronTest {
             logger.debug("Adding new event {}", i);
         }
         Thread.sleep(1000);
-        final RollingFileAppender app = (RollingFileAppender) loggerContextRule.getContext().getConfiguration().getAppender("RollingFile");
+        final RollingFileAppender app = (RollingFileAppender) loggerContextRule.getLoggerContext().getConfiguration().getAppender("RollingFile");
         final TriggeringPolicy policy = app.getManager().getTriggeringPolicy();
         assertNotNull("No triggering policy", policy);
         assertTrue("Incorrect policy type", policy instanceof CronTriggeringPolicy);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java
index 2fa5cd3..ac0c152 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java
@@ -57,7 +57,7 @@ public class PropertiesRoutingAppenderTest {
     @After
     public void tearDown() throws Exception {
         this.app.clear();
-        this.loggerContextRule.getContext().stop();
+        this.loggerContextRule.getLoggerContext().stop();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java
index 3df13c6..cd28c21 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java
@@ -56,7 +56,7 @@ public class RoutingAppenderTest {
     @After
     public void tearDown() throws Exception {
         this.app.clear();
-        this.loggerContextRule.getContext().stop();
+        this.loggerContextRule.getLoggerContext().stop();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
index db1f26b..8fdb402 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
@@ -71,7 +71,7 @@ public class RoutingAppenderWithPurgingTest {
     @After
     public void tearDown() throws Exception {
         this.app.clear();
-        this.loggerContextRule.getContext().stop();
+        this.loggerContextRule.getLoggerContext().stop();
     }
 
     @Test(timeout = 5000)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java
index b003a84..caf2cde 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java
@@ -56,7 +56,7 @@ public class RoutingDefaultAppenderTest {
         if (app != null) {
             app.clear();
         }
-        this.loggerContextRule.getContext().stop();
+        this.loggerContextRule.getLoggerContext().stop();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/config/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/ConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/ConfigurationTest.java
index 0c7c569..a9b48e7 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/ConfigurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/ConfigurationTest.java
@@ -89,7 +89,7 @@ public class ConfigurationTest {
 
     @Before
     public void setUp() throws Exception {
-        this.ctx = this.init.getContext();
+        this.ctx = this.init.getLoggerContext();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
index 6c7b5f0..ab31fe0 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
@@ -66,7 +66,7 @@ public class CustomConfigurationTest {
     @Test
     public void testConfig() {
         // don't bother using "error" since that's the default; try another level
-        final LoggerContext ctx = this.init.getContext();
+        final LoggerContext ctx = this.init.getLoggerContext();
         ctx.reconfigure();
         final Configuration config = ctx.getConfiguration();
         assertThat(config, instanceOf(XmlConfiguration.class));

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MissingRootLoggerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MissingRootLoggerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MissingRootLoggerTest.java
index 60aa0d9..ba711dd 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MissingRootLoggerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MissingRootLoggerTest.java
@@ -42,7 +42,7 @@ public class MissingRootLoggerTest {
 
     @Test
     public void testMissingRootLogger() throws Exception {
-        final LoggerContext ctx = context.getContext();
+        final LoggerContext ctx = context.getLoggerContext();
         final Logger logger = ctx.getLogger("sample.Logger1");
         assertTrue("Logger should have the INFO level enabled", logger.isInfoEnabled());
         assertFalse("Logger should have the DEBUG level disabled", logger.isDebugEnabled());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
index 9027b1d..8847da1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
@@ -89,7 +89,7 @@ public class XIncludeTest {
 
     @Before
     public void setUp() throws Exception {
-        this.ctx = this.init.getContext();
+        this.ctx = this.init.getLoggerContext();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ShutdownCallbackRegistryTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ShutdownCallbackRegistryTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ShutdownCallbackRegistryTest.java
index 505c272..433783e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ShutdownCallbackRegistryTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ShutdownCallbackRegistryTest.java
@@ -47,7 +47,7 @@ public class ShutdownCallbackRegistryTest {
 
     @Test
     public void testShutdownCallbackRegistry() throws Exception {
-        final LoggerContext context = ctx.getContext();
+        final LoggerContext context = ctx.getLoggerContext();
         assertTrue("LoggerContext should be started", context.isStarted());
         assertThat(Registry.CALLBACKS, hasSize(1));
         Registry.shutdown();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9152a820/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
index c3aaef9..b3ec1e0 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
@@ -50,7 +50,7 @@ public class LoggerContextRule implements TestRule {
     private static final String SYS_PROP_KEY_CLASS_NAME = "org.apache.logging.log4j.junit.LoggerContextRule#ClassName";
     private static final String SYS_PROP_KEY_DISPLAY_NAME = "org.apache.logging.log4j.junit.LoggerContextRule#DisplayName";
     private final String configLocation;
-    private LoggerContext context;
+    private LoggerContext loggerContext;
     private Class<? extends ContextSelector> contextSelectorClass;
     private String testClassName;
     private long shutdownTimeout;
@@ -107,16 +107,16 @@ public class LoggerContextRule implements TestRule {
                 // LogManager.setFactory(new Log4jContextFactory(LoaderUtil.newInstanceOf(contextSelectorClass)));
                 System.setProperty(SYS_PROP_KEY_CLASS_NAME, description.getClassName());
                 System.setProperty(SYS_PROP_KEY_DISPLAY_NAME, description.getDisplayName());
-                context = Configurator.initialize(description.getDisplayName(),
+                loggerContext = Configurator.initialize(description.getDisplayName(),
                         description.getTestClass().getClassLoader(), configLocation);
                 try {
                     base.evaluate();
                 } finally {
-                    if (!Configurator.shutdown(context, shutdownTimeout, shutdownTimeUnit)) {
+                    if (!Configurator.shutdown(loggerContext, shutdownTimeout, shutdownTimeUnit)) {
                         StatusLogger.getLogger().error("Logger context {} did not shutdown completely after {} {}.",
-                                context.getName(), shutdownTimeout, shutdownTimeUnit);
+                                loggerContext.getName(), shutdownTimeout, shutdownTimeUnit);
                     }
-                    context = null;
+                    loggerContext = null;
                     contextSelectorClass = null;
                     StatusLogger.getLogger().reset();
                     System.clearProperty(Constants.LOG4J_CONTEXT_SELECTOR);
@@ -160,7 +160,7 @@ public class LoggerContextRule implements TestRule {
      * @return this LoggerContext's Configuration.
      */
     public Configuration getConfiguration() {
-        return context.getConfiguration();
+        return loggerContext.getConfiguration();
     }
 
     /**
@@ -168,8 +168,8 @@ public class LoggerContextRule implements TestRule {
      *
      * @return the current LoggerContext.
      */
-    public LoggerContext getContext() {
-        return context;
+    public LoggerContext getLoggerContext() {
+        return loggerContext;
     }
 
     /**
@@ -195,7 +195,7 @@ public class LoggerContextRule implements TestRule {
      * @return the test class's named Logger.
      */
     public Logger getLogger() {
-        return context.getLogger(testClassName);
+        return loggerContext.getLogger(testClassName);
     }
 
     /**
@@ -206,7 +206,7 @@ public class LoggerContextRule implements TestRule {
      * @return the named Logger.
      */
     public Logger getLogger(final String name) {
-        return context.getLogger(name);
+        return loggerContext.getLogger(name);
     }
 
     /**
@@ -249,7 +249,7 @@ public class LoggerContextRule implements TestRule {
      * @return the root logger.
      */
     public Logger getRootLogger() {
-        return context.getRootLogger();
+        return loggerContext.getRootLogger();
     }
 
     @Override


[06/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ". More tests.

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ". More tests.

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

Branch: refs/heads/LOG4J2-1553
Commit: 05bbe44a991b4fbb76d138a902285c7951c33cea
Parents: 8d873b0
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 17:41:39 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 17:41:39 2016 -0700

----------------------------------------------------------------------
 .../CsvJsonParameterLayoutFileAppenderTest.java | 26 +++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/05bbe44a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
index 4722c3a..84578fc 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -42,14 +42,11 @@ public class CsvJsonParameterLayoutFileAppenderTest {
     @Rule
     public RuleChain rule = loggerContextRule.withCleanFilesRule(FILE_PATH);
 
-    @Test
-    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
-    public void testNoNulCharacters() throws IOException {
+    public void testNoNulCharacters(final String message) throws IOException {
         @SuppressWarnings("resource")
         final LoggerContext loggerContext = loggerContextRule.getLoggerContext();
         final Logger logger = loggerContext.getLogger("com.example");
-        final String json = "{\"id\":10,\"name\":\"Alice\"}";
-        logger.error("log:", json);
+        logger.error("log:", message);
         loggerContext.stop();
         final File file = new File(FILE_PATH);
         final byte[] contents = Files.toByteArray(file);
@@ -66,6 +63,23 @@ public class CsvJsonParameterLayoutFileAppenderTest {
         Assert.assertEquals("File contains " + count0s + " 0x00 byte at indices " + sb, 0, count0s);
         final List<String> readLines = Files.readLines(file, Charset.defaultCharset());
         final String actual = readLines.get(0);
-        Assert.assertTrue(actual, actual.contains(json));
+        Assert.assertTrue(actual, actual.contains(message));
+    }
+
+    @Test
+    public void testNoNulCharactersABC() throws IOException {
+        testNoNulCharacters("ABC");;
+    }
+
+    @Test
+    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
+    public void testNoNulCharactersJson() throws IOException {
+        testNoNulCharacters("{\"id\":10,\"name\":\"Alice\"}");;
+    }
+
+    @Test
+    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
+    public void testNoNulCharactersXml() throws IOException {
+        testNoNulCharacters("<test attr1='val1' attr2=\"value2\">X</test>");
     }
 }


[10/19] logging-log4j2 git commit: Added missing null check for future in stop() because future could be null if there wasn't an log event before

Posted by gg...@apache.org.
Added missing null check for future in stop() because future could be null if there wasn't an log event before


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

Branch: refs/heads/LOG4J2-1553
Commit: d74f4b13cad1ba3c11945afd4f0410f5ea03d29d
Parents: 040e29e
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Wed Jun 22 08:46:48 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:54 2016 -0700

----------------------------------------------------------------------
 .../logging/log4j/core/appender/routing/IdlePurgePolicy.java     | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d74f4b13/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index dacf993..5a5ee6a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -60,7 +60,9 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     @Override
     public void stop() {
         super.stop();
-        future.cancel(true);
+        if(future != null) {
+            future.cancel(true);
+        }
     }
 
     /**


[11/19] logging-log4j2 git commit: Fixed compilation error after merge with master

Posted by gg...@apache.org.
Fixed compilation error after merge with master


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

Branch: refs/heads/LOG4J2-1553
Commit: f8b86f5191ed7756f83fe8f3115d2eb5c2365ae7
Parents: d74f4b1
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Mon Aug 1 00:47:35 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:54 2016 -0700

----------------------------------------------------------------------
 .../logging/log4j/core/appender/routing/IdlePurgePolicy.java    | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8b86f51/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index 5a5ee6a..9fee717 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -31,6 +32,7 @@ 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.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.status.StatusLogger;
 
 /**
  * Policy is purging appenders that were not in use specified time in minutes
@@ -39,6 +41,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 @Scheduled
 public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, Runnable {
 
+    private static final Logger LOGGER = StatusLogger.getLogger();
     private final long timeToLive;
     private final long checkInterval;    
     private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
@@ -46,7 +49,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     private final ConfigurationScheduler scheduler;
     private volatile ScheduledFuture<?> future = null;
 
-    public IdlePurgePolicy(long timeToLive, long checkInterval, final ConfigurationScheduler scheduler) {
+    public IdlePurgePolicy(final long timeToLive, final long checkInterval, final ConfigurationScheduler scheduler) {
         this.timeToLive = timeToLive;
         this.checkInterval = checkInterval;
         this.scheduler = scheduler;


[03/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ".

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ".

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

Branch: refs/heads/LOG4J2-1553
Commit: debb8ec1ca84e3a362c688b796df4aa45d25e1af
Parents: 629edaa
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 14:31:08 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 14:31:08 2016 -0700

----------------------------------------------------------------------
 .../CsvJsonParameterLayoutFileAppenderTest.java | 71 ++++++++++++++++++++
 .../test/resources/log4j-cvs-json-parameter.xml | 34 ++++++++++
 2 files changed, 105 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/debb8ec1/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
new file mode 100644
index 0000000..851e692
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.appender;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.List;
+
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+
+import com.google.common.io.Files;
+
+public class CsvJsonParameterLayoutFileAppenderTest {
+
+    private static final String FILE_PATH = "target/CsvJsonParameterLayoutFileAppenderTest.log";
+
+    private static final LoggerContextRule loggerContextRule = new LoggerContextRule("log4j-cvs-json-parameter.xml");
+
+    @Rule
+    public RuleChain rule = loggerContextRule.withCleanFilesRule(FILE_PATH);
+
+    @Test
+    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
+    public void testNoNulCharacters() throws IOException {
+        @SuppressWarnings("resource")
+        final LoggerContext loggerContext = loggerContextRule.getLoggerContext();
+        final Logger logger = loggerContext.getLogger("com.example");
+        final String json = "{\"id\":10,\"name\":\"Alice\"}";
+        logger.error("log:", json);
+        loggerContext.stop();
+        final File file = new File(FILE_PATH);
+        final byte[] contents = Files.toByteArray(file);
+        int count0s = 0;
+        final StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < contents.length; i++) {
+            final byte b = contents[i];
+            if (b == 0) {
+                sb.append(i);
+                sb.append(", ");
+                count0s++;
+            }
+        }
+        Assert.assertEquals("File contains at least one 0x00 byte at indices " + sb, 0, count0s);
+        final List<String> readLines = Files.readLines(file, Charset.defaultCharset());
+        final String actual = readLines.get(0);
+        Assert.assertTrue(actual, actual.contains(json));
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/debb8ec1/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml b/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
new file mode 100644
index 0000000..f47f69e
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<Configuration status="warn" name="CsvJsonParameterLayoutFileAppenderTest">
+  <Appenders>
+    <File name="File" fileName="target/CsvJsonParameterLayoutFileAppenderTest.log" bufferedIO="false">
+      <CsvParameterLayout delimiter=",">
+      </CsvParameterLayout>
+    </File>
+  </Appenders>
+
+  <Loggers>
+
+    <Root level="error">
+      <AppenderRef ref="File"/>
+    </Root>
+  </Loggers>
+
+</Configuration>
\ No newline at end of file


[18/19] logging-log4j2 git commit: Merge remote-tracking branch 'origin/master' into LOG4J2-1553

Posted by gg...@apache.org.
Merge remote-tracking branch 'origin/master' into LOG4J2-1553

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

Branch: refs/heads/LOG4J2-1553
Commit: e9b9ad9f1c1af8513b824100c046a78545527cd6
Parents: 7ad1489 b46c23c
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 12:56:44 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 12:56:44 2016 -0700

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  |  57 ++++++---
 .../core/appender/routing/RoutingAppender.java  |  35 +++---
 .../log4j/core/layout/AbstractCsvLayout.java    |  10 +-
 .../apache/logging/log4j/core/DeadlockTest.java |   2 +-
 .../logging/log4j/core/LoggerUpdateTest.java    |   2 +-
 .../CsvJsonParameterLayoutFileAppenderTest.java | 117 +++++++++++++++++++
 .../appender/JsonCompleteFileAppenderTest.java  |   2 +-
 .../appender/RandomAccessFileAppenderTests.java |   2 +-
 .../RollingAppenderCronOnceADayTest.java        |   2 +-
 .../rolling/RollingAppenderCronTest.java        |   2 +-
 .../routing/PropertiesRoutingAppenderTest.java  |   2 +-
 .../appender/routing/RoutingAppenderTest.java   |   2 +-
 .../routing/RoutingAppenderWithPurgingTest.java |  21 +++-
 .../routing/RoutingDefaultAppenderTest.java     |   2 +-
 .../log4j/core/config/ConfigurationTest.java    |   2 +-
 .../core/config/CustomConfigurationTest.java    |   2 +-
 .../core/config/MissingRootLoggerTest.java      |   2 +-
 .../logging/log4j/core/config/XIncludeTest.java |   2 +-
 .../core/util/ShutdownCallbackRegistryTest.java |   2 +-
 .../logging/log4j/junit/LoggerContextRule.java  |  22 ++--
 .../test/resources/log4j-cvs-json-parameter.xml |  32 +++++
 log4j-samples/scala-api/.gitignore              |   3 +
 src/changes/changes.xml                         |  18 ++-
 23 files changed, 273 insertions(+), 70 deletions(-)
----------------------------------------------------------------------



[19/19] logging-log4j2 git commit: [LOG4J2-1553] AbstractManager should implement AutoCloseable.

Posted by gg...@apache.org.
[LOG4J2-1553] AbstractManager should implement AutoCloseable.

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

Branch: refs/heads/LOG4J2-1553
Commit: a0d08f3f7380f6cb5a814eb1acaf2ce6464e0434
Parents: e9b9ad9
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 12:57:16 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 12:57:16 2016 -0700

----------------------------------------------------------------------
 .../apache/logging/log4j/core/appender/AbstractManager.java    | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a0d08f3f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
index 450d14b..4855a12 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
@@ -29,6 +29,12 @@ import org.apache.logging.log4j.status.StatusLogger;
 
 /**
  * Abstract base class used to register managers.
+ * <p>
+ * This class implements {@link AutoCloseable} mostly to allow unit tests to be written safely and succinctly. While
+ * managers do need to allocate resources (usually on construction) and then free these resources, a manager is longer
+ * lived than other auto-closeable objects like streams. None the less, making a manager AutoCloseable forces readers to
+ * be aware of the the pattern: allocate resources on construction and call {@link #close()} at some point.
+ * </p>
  */
 public abstract class AbstractManager implements AutoCloseable {
 


[02/19] logging-log4j2 git commit: Ignore Eclipse files and folders.

Posted by gg...@apache.org.
Ignore Eclipse files and folders.

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

Branch: refs/heads/LOG4J2-1553
Commit: 629edaa5a0843fff5a67f4d77581f29d028ed488
Parents: 9152a82
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 14:06:10 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 14:06:10 2016 -0700

----------------------------------------------------------------------
 log4j-samples/scala-api/.gitignore | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/629edaa5/log4j-samples/scala-api/.gitignore
----------------------------------------------------------------------
diff --git a/log4j-samples/scala-api/.gitignore b/log4j-samples/scala-api/.gitignore
new file mode 100644
index 0000000..ddd6d6d
--- /dev/null
+++ b/log4j-samples/scala-api/.gitignore
@@ -0,0 +1,3 @@
+/.settings/
+/.classpath
+/.project


[14/19] logging-log4j2 git commit: Group "add"s together.

Posted by gg...@apache.org.
Group "add"s together.

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

Branch: refs/heads/LOG4J2-1553
Commit: daa6776713964e94942622b7fdc0fabca94bdb2f
Parents: 8968716
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 11:38:26 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 11:38:26 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/daa67767/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 108d75a..6a12f64 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,12 +24,6 @@
   </properties>
   <body>
     <release version="2.7" date="2016-MM-DD" description="GA Release 2.7">
-      <action issue="LOG4J2-1181" dev="mikes" type="add">
-        Scala API.
-      </action>
-      <action issue="LOG4J2-1512" dev="mikes" type="add">
-        Options to exclude stack trace from JSON, XML and YAML layouts.
-      </action>
       <action issue="LOG4J2-1511" dev="ggregory" type="fix" due-to="Srikanth Surukuntu">
         DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs.
       </action>
@@ -102,6 +96,12 @@
       <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel">
         Properties declared in configuration can now have their value either in the element body or in an attribute named "value".
       </action>
+      <action issue="LOG4J2-1181" dev="mikes" type="add">
+        Scala API.
+      </action>
+      <action issue="LOG4J2-1512" dev="mikes" type="add">
+        Options to exclude stack trace from JSON, XML and YAML layouts.
+      </action>
       <action issue="LOG4J2-1539" dev="ggregory" type="add" due-to="Gary Gregory">
         Add Core API Configurator.shutdown(LoggerContext, long, TimeUnit).
       </action>


[17/19] logging-log4j2 git commit: [LOG4J2-1502] CsvParameterLayout and CsvLogEventLayout insert NUL characters if data starts with {, (, [ or "

Posted by gg...@apache.org.
[LOG4J2-1502] CsvParameterLayout and CsvLogEventLayout insert NUL
characters if data starts with {, (, [ or "

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

Branch: refs/heads/LOG4J2-1553
Commit: b46c23c9c6e4e272a747356aef94edc3e9e4bcdc
Parents: f9a5d55
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 12:50:11 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 12:50:11 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b46c23c9/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 10be4c8..672e23d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -100,7 +100,7 @@
         org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.
       </action>
       <action issue="LOG4J2-1502" dev="ggregory" type="fix" due-to="Sumit Singhal">
-        CsvParameterLayout is inserting NUL character if data starts with {, (, [ or "
+        CsvParameterLayout and CsvLogEventLayout insert NUL characters if data starts with {, (, [ or "
       </action>
       <action issue="LOG4J2-1181" dev="mikes" type="add">
         Scala API.


[13/19] logging-log4j2 git commit: Code style fixes

Posted by gg...@apache.org.
Code style fixes


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

Branch: refs/heads/LOG4J2-1553
Commit: 183fbf23944256f7ba3a38315077f0368e76c460
Parents: f8b86f5
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Thu Aug 4 12:15:07 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:55 2016 -0700

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  | 10 +++++-----
 .../core/appender/routing/RoutingAppender.java  | 20 ++++++++++----------
 2 files changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/183fbf23/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index 9fee717..e2b818e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -63,7 +63,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     @Override
     public void stop() {
         super.stop();
-        if(future != null) {
+        if (future != null) {
             future.cancel(true);
         }
     }
@@ -77,7 +77,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
-                if(appendersUsage.remove(entry.getKey(), entry.getValue())) {
+                if (appendersUsage.remove(entry.getKey(), entry.getValue())) {
                     routingAppender.deleteAppender(entry.getKey());
                 }
             }
@@ -153,17 +153,17 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         }
 
         long ttl = units.toMillis(Long.parseLong(timeToLive));
-        if(ttl < 0) {
+        if (ttl < 0) {
             LOGGER.error("timeToLive must be positive. timeToLive set to 0");
             ttl = 0;
         }
         
         long ci;
-        if(checkInterval == null) {
+        if (checkInterval == null) {
             ci = ttl;
         } else {
             ci = units.toMillis(Long.parseLong(checkInterval));
-            if(ci < 0) {
+            if (ci < 0) {
                 LOGGER.error("checkInterval must be positive. checkInterval set equal to timeToLive = {}", ttl);
                 ci = ttl;
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/183fbf23/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 059413d..7e11254 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -52,7 +52,7 @@ public final class RoutingAppender extends AbstractAppender {
     private final Configuration config;
     private final ConcurrentMap<String, AppenderControl> appenders = new ConcurrentHashMap<>();
     private final RewritePolicy rewritePolicy;
-	  private final PurgePolicy purgePolicy;
+    private final PurgePolicy purgePolicy;
 
     private RoutingAppender(final String name, final Filter filter, final boolean ignoreExceptions, final Routes routes,
                             final RewritePolicy rewritePolicy, final Configuration config, final PurgePolicy purgePolicy) {
@@ -61,8 +61,8 @@ public final class RoutingAppender extends AbstractAppender {
         this.config = config;
         this.rewritePolicy = rewritePolicy;
         this.purgePolicy = purgePolicy;
-        if(this.purgePolicy != null) {
-        	this.purgePolicy.initialize(this);
+        if (this.purgePolicy != null) {
+            this.purgePolicy.initialize(this);
         }
         Route defRoute = null;
         for (final Route route : routes.getRoutes()) {
@@ -117,12 +117,12 @@ public final class RoutingAppender extends AbstractAppender {
             control.callAppender(event);
         }
         
-        if(purgePolicy != null) {
-        	purgePolicy.update(key, event);
+        if (purgePolicy != null) {
+            purgePolicy.update(key, event);
         }
     }
 
-	private synchronized AppenderControl getControl(final String key, final LogEvent event) {
+    private synchronized AppenderControl getControl(final String key, final LogEvent event) {
         AppenderControl control = appenders.get(key);
         if (control != null) {
             return control;
@@ -173,8 +173,8 @@ public final class RoutingAppender extends AbstractAppender {
     }
     
     public Map<String, AppenderControl> getAppenders() {
-		return Collections.unmodifiableMap(appenders);
-	}    
+        return Collections.unmodifiableMap(appenders);
+    }
     
     /**
      * Delete specified appender
@@ -186,8 +186,8 @@ public final class RoutingAppender extends AbstractAppender {
         AppenderControl control = appenders.remove(key);
         control.getAppender().stop();
         LOGGER.debug("Deleting route with " + key + " key ");
-        AppenderControl control = appenders.remove(key);
-        if(null != control) {
+        final AppenderControl control = appenders.remove(key);
+        if (null != control) {
             LOGGER.debug("Stopping route with " + key + " key");
             control.getAppender().stop();
         } else {


[12/19] logging-log4j2 git commit: Fixed compilation error after rebase

Posted by gg...@apache.org.
Fixed compilation error after rebase


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

Branch: refs/heads/LOG4J2-1553
Commit: 8968716e8edb24d2c0833d73c2a583bab9917e22
Parents: 183fbf2
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Fri Aug 5 12:04:47 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:55 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/routing/RoutingAppender.java     | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8968716e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 7e11254..18b7777 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -116,7 +116,7 @@ public final class RoutingAppender extends AbstractAppender {
         if (control != null) {
             control.callAppender(event);
         }
-        
+
         if (purgePolicy != null) {
             purgePolicy.update(key, event);
         }
@@ -171,20 +171,17 @@ public final class RoutingAppender extends AbstractAppender {
         LOGGER.error("No Appender was configured for route " + route.getKey());
         return null;
     }
-    
+
     public Map<String, AppenderControl> getAppenders() {
         return Collections.unmodifiableMap(appenders);
     }
-    
+
     /**
      * Delete specified appender
-     * 
+     *
      * @param key The appender's key
      */
     public void deleteAppender(final String key) {
-        LOGGER.debug("Stopping route with key" + key);
-        AppenderControl control = appenders.remove(key);
-        control.getAppender().stop();
         LOGGER.debug("Deleting route with " + key + " key ");
         final AppenderControl control = appenders.remove(key);
         if (null != control) {


[15/19] logging-log4j2 git commit: [LOG4J2-1235] org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.

Posted by gg...@apache.org.
[LOG4J2-1235]
org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not
working correctly.

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

Branch: refs/heads/LOG4J2-1553
Commit: c85a63c095e86a165e733e5b07e813ec8788a803
Parents: daa6776
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 11:40:03 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 11:40:03 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c85a63c0/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6a12f64..b901033 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -96,6 +96,9 @@
       <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel">
         Properties declared in configuration can now have their value either in the element body or in an attribute named "value".
       </action>
+      <action issue="LOG4J2-1235" dev="ggregory" type="fix" due-to="Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky">
+        org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.
+      </action>
       <action issue="LOG4J2-1181" dev="mikes" type="add">
         Scala API.
       </action>


[07/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ". Clean ups.

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ". Clean ups.

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

Branch: refs/heads/LOG4J2-1553
Commit: a9806326f73a5f3eabb7adf7d45a83e914af9e37
Parents: 05bbe44
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 17:42:01 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 17:42:01 2016 -0700

----------------------------------------------------------------------
 .../core/appender/CsvJsonParameterLayoutFileAppenderTest.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a9806326/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
index 84578fc..9526e99 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -68,13 +68,13 @@ public class CsvJsonParameterLayoutFileAppenderTest {
 
     @Test
     public void testNoNulCharactersABC() throws IOException {
-        testNoNulCharacters("ABC");;
+        testNoNulCharacters("ABC");
     }
 
     @Test
     @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
     public void testNoNulCharactersJson() throws IOException {
-        testNoNulCharacters("{\"id\":10,\"name\":\"Alice\"}");;
+        testNoNulCharacters("{\"id\":10,\"name\":\"Alice\"}");
     }
 
     @Test


[09/19] logging-log4j2 git commit: LOG4J2-1235 - org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly 1. Removed issue with NPE when tries to delete already deleted appender 2. Added parameter checkInterval for cases when

Posted by gg...@apache.org.
LOG4J2-1235 - org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly 1. Removed issue with NPE when tries to delete already deleted appender 2. Added parameter checkInterval for cases when all appenders already purged, so scheduler will keep working with this interval 3. Fixed an issue when appender purged even if received new event to it during purge procedure


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

Branch: refs/heads/LOG4J2-1553
Commit: 040e29e209133efef788eb4132de30262d954ee4
Parents: af7d1a0
Author: Aleksey Zvolinsky <al...@zvolinsky.name>
Authored: Fri May 27 15:29:37 2016 +0300
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 10:20:53 2016 -0700

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  | 56 +++++++++++++-------
 .../core/appender/routing/RoutingAppender.java  | 14 +++--
 .../routing/RoutingAppenderWithPurgingTest.java | 19 +++++--
 3 files changed, 64 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index f4f6e35..dacf993 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -22,7 +22,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -32,7 +31,6 @@ 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.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.status.StatusLogger;
 
 /**
  * Policy is purging appenders that were not in use specified time in minutes
@@ -41,15 +39,16 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Scheduled
 public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, Runnable {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
     private final long timeToLive;
+    private final long checkInterval;    
     private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
     private RoutingAppender routingAppender;
     private final ConfigurationScheduler scheduler;
     private volatile ScheduledFuture<?> future = null;
 
-    public IdlePurgePolicy(final long timeToLive, final ConfigurationScheduler scheduler) {
+    public IdlePurgePolicy(long timeToLive, long checkInterval, final ConfigurationScheduler scheduler) {
         this.timeToLive = timeToLive;
+        this.checkInterval = checkInterval;
         this.scheduler = scheduler;
     }
 
@@ -73,8 +72,9 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
-                appendersUsage.remove(entry.getKey());
-                routingAppender.deleteAppender(entry.getKey());
+                if(appendersUsage.remove(entry.getKey(), entry.getValue())) {
+                    routingAppender.deleteAppender(entry.getKey());
+                }
             }
         }
     }
@@ -100,33 +100,39 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     }
 
     private void scheduleNext() {
-        long createTime = Long.MAX_VALUE;
+        long updateTime = Long.MAX_VALUE;
         for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
-            if (entry.getValue() < createTime) {
-                createTime = entry.getValue();
+            if (entry.getValue() < updateTime) {
+                updateTime = entry.getValue();
             }
         }
-        if (createTime < Long.MAX_VALUE) {
-            final long interval = timeToLive - (System.currentTimeMillis() - createTime);
+
+        if (updateTime < Long.MAX_VALUE) {
+            long interval = timeToLive - (System.currentTimeMillis() - updateTime);
             future = scheduler.schedule(this, interval, TimeUnit.MILLISECONDS);
+        } else {
+            // reset to initial state - in case of all appenders already purged
+            future = scheduler.schedule(this, checkInterval, TimeUnit.MILLISECONDS);
         }
     }
 
     /**
      * Create the PurgePolicy
      *
-     * @param timeToLive the number of increments of timeUnit before the Appender should be purged.
-     * @param timeUnit   the unit of time the timeToLive is expressed in.
+     * @param timeToLive    the number of increments of timeUnit before the Appender should be purged.
+     * @param checkInterval when all appenders purged, the number of increments of timeUnit to check if any appenders appeared  
+     * @param timeUnit      the unit of time the timeToLive and the checkInterval is expressed in.
      * @return The Routes container.
      */
     @PluginFactory
     public static PurgePolicy createPurgePolicy(
         @PluginAttribute("timeToLive") final String timeToLive,
+        @PluginAttribute("checkInterval") final String checkInterval,
         @PluginAttribute("timeUnit") final String timeUnit,
         @PluginConfiguration final Configuration configuration) {
 
         if (timeToLive == null) {
-            LOGGER.error("A timeToLive  value is required");
+            LOGGER.error("A timeToLive value is required");
             return null;
         }
         TimeUnit units;
@@ -136,15 +142,29 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
             try {
                 units = TimeUnit.valueOf(timeUnit.toUpperCase());
             } catch (final Exception ex) {
-                LOGGER.error("Invalid time unit {}", timeUnit);
+                LOGGER.error("Invalid timeUnit value {}. timeUnit set to MINUTES", timeUnit, ex);
                 units = TimeUnit.MINUTES;
             }
         }
 
-        final long ttl = units.toMillis(Long.parseLong(timeToLive));
-
+        long ttl = units.toMillis(Long.parseLong(timeToLive));
+        if(ttl < 0) {
+            LOGGER.error("timeToLive must be positive. timeToLive set to 0");
+            ttl = 0;
+        }
+        
+        long ci;
+        if(checkInterval == null) {
+            ci = ttl;
+        } else {
+            ci = units.toMillis(Long.parseLong(checkInterval));
+            if(ci < 0) {
+                LOGGER.error("checkInterval must be positive. checkInterval set equal to timeToLive = {}", ttl);
+                ci = ttl;
+            }
+        }
 
-        return new IdlePurgePolicy(ttl, configuration.getScheduler());
+        return new IdlePurgePolicy(ttl, ci, configuration.getScheduler());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 0df19eb..059413d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -182,9 +182,17 @@ public final class RoutingAppender extends AbstractAppender {
      * @param key The appender's key
      */
     public void deleteAppender(final String key) {
-    	LOGGER.debug("Stopping route with key" + key);
-    	final AppenderControl control = appenders.remove(key);
-    	control.getAppender().stop();
+        LOGGER.debug("Stopping route with key" + key);
+        AppenderControl control = appenders.remove(key);
+        control.getAppender().stop();
+        LOGGER.debug("Deleting route with " + key + " key ");
+        AppenderControl control = appenders.remove(key);
+        if(null != control) {
+            LOGGER.debug("Stopping route with " + key + " key");
+            control.getAppender().stop();
+        } else {
+            LOGGER.debug("Route with " + key + " key already deleted");
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/040e29e2/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
index 8fdb402..9fc4005 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java
@@ -105,11 +105,22 @@ public class RoutingAppenderWithPurgingTest {
 
         assertEquals("Incorrect number of appenders with IdlePurgePolicy.", 1, routingAppenderIdle.getAppenders().size());
         assertEquals("Incorrect number of appenders with manual purge.", 0, routingAppenderManual.getAppenders().size());
+
+        msg = new StructuredDataMessage("5", "This is a test 5", "Service");
+        EventLogger.logEvent(msg);
+
+        assertEquals("Incorrect number of appenders with manual purge.", 1, routingAppenderManual.getAppenders().size());
+
+        routingAppenderManual.deleteAppender("5");
+        routingAppenderManual.deleteAppender("5");
+
+        assertEquals("Incorrect number of appenders with manual purge.", 0, routingAppenderManual.getAppenders().size());
     }
 
-    private void assertFileExistance(final String... files) {
-    	for (final String file : files) {
-			assertTrue("File should exist - " + file + " file ", new File(file).exists());
-		}
+
+    private void assertFileExistance(String... files) {
+        for (String file : files) {
+            assertTrue("File should exist - " + file + " file ", new File(file).exists());
+        }
     }
 }


[04/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ".

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ".

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

Branch: refs/heads/LOG4J2-1553
Commit: 447ca8d9b54499b214b38b75e2911b9e76b6e87c
Parents: debb8ec
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 14:32:37 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 14:32:37 2016 -0700

----------------------------------------------------------------------
 log4j-core/src/test/resources/log4j-cvs-json-parameter.xml | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/447ca8d9/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml b/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
index f47f69e..ad73a80 100644
--- a/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
+++ b/log4j-core/src/test/resources/log4j-cvs-json-parameter.xml
@@ -14,7 +14,6 @@
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-
 -->
 <Configuration status="warn" name="CsvJsonParameterLayoutFileAppenderTest">
   <Appenders>
@@ -25,7 +24,6 @@
   </Appenders>
 
   <Loggers>
-
     <Root level="error">
       <AppenderRef ref="File"/>
     </Root>


[08/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ". Add Assert.

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ". Add Assert.

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

Branch: refs/heads/LOG4J2-1553
Commit: af7d1a0d7ea4fcc45a61433352b13982ff53ca7e
Parents: a980632
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 17:43:27 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 17:43:27 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/af7d1a0d/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
index 9526e99..27c9366 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -64,6 +64,7 @@ public class CsvJsonParameterLayoutFileAppenderTest {
         final List<String> readLines = Files.readLines(file, Charset.defaultCharset());
         final String actual = readLines.get(0);
         Assert.assertTrue(actual, actual.contains(message));
+        Assert.assertEquals(1, readLines.size());
     }
 
     @Test


[05/19] logging-log4j2 git commit: Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or ". Better assert message.

Posted by gg...@apache.org.
Test [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or ". Better assert message.

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

Branch: refs/heads/LOG4J2-1553
Commit: 8d873b06128cb5dea61e25a61c36a9ebf63caadf
Parents: 447ca8d
Author: Gary Gregory <gg...@apache.org>
Authored: Sun Aug 28 14:40:53 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun Aug 28 14:40:53 2016 -0700

----------------------------------------------------------------------
 .../core/appender/CsvJsonParameterLayoutFileAppenderTest.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8d873b06/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
index 851e692..4722c3a 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -63,7 +63,7 @@ public class CsvJsonParameterLayoutFileAppenderTest {
                 count0s++;
             }
         }
-        Assert.assertEquals("File contains at least one 0x00 byte at indices " + sb, 0, count0s);
+        Assert.assertEquals("File contains " + count0s + " 0x00 byte at indices " + sb, 0, count0s);
         final List<String> readLines = Files.readLines(file, Charset.defaultCharset());
         final String actual = readLines.get(0);
         Assert.assertTrue(actual, actual.contains(json));


[16/19] logging-log4j2 git commit: [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or "

Posted by gg...@apache.org.
[LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or "

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

Branch: refs/heads/LOG4J2-1553
Commit: f9a5d552a9040c50adcfdd46fc2aeff67281bd76
Parents: c85a63c
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Aug 29 12:41:49 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Aug 29 12:41:49 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/layout/AbstractCsvLayout.java    | 10 ++--
 .../CsvJsonParameterLayoutFileAppenderTest.java | 49 ++++++++++++++++----
 src/changes/changes.xml                         |  3 ++
 3 files changed, 50 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f9a5d552/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
index 3d0d80c..ffa6ea6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
@@ -38,13 +38,13 @@ public abstract class AbstractCsvLayout extends AbstractStringLayout {
     protected static CSVFormat createFormat(final String format, final Character delimiter, final Character escape,
             final Character quote, final QuoteMode quoteMode, final String nullString, final String recordSeparator) {
         CSVFormat csvFormat = CSVFormat.valueOf(format);
-        if (delimiter != null) {
+        if (isNotNul(delimiter)) {
             csvFormat = csvFormat.withDelimiter(delimiter);
         }
-        if (escape != null) {
+        if (isNotNul(escape)) {
             csvFormat = csvFormat.withEscape(escape);
         }
-        if (quote != null) {
+        if (isNotNul(quote)) {
             csvFormat = csvFormat.withQuote(quote);
         }
         if (quoteMode != null) {
@@ -59,6 +59,10 @@ public abstract class AbstractCsvLayout extends AbstractStringLayout {
         return csvFormat;
     }
 
+    private static boolean isNotNul(final Character character) {
+        return character != null && character.charValue() != 0;
+    }
+
     private final CSVFormat format;
 
     protected AbstractCsvLayout(final Configuration config, final Charset charset, final CSVFormat csvFormat,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f9a5d552/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
index 27c9366..e4357b5 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/CsvJsonParameterLayoutFileAppenderTest.java
@@ -26,13 +26,15 @@ import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.junit.LoggerContextRule;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import com.google.common.io.Files;
 
+/**
+ * Tests https://issues.apache.org/jira/browse/LOG4J2-1502
+ */
 public class CsvJsonParameterLayoutFileAppenderTest {
 
     private static final String FILE_PATH = "target/CsvJsonParameterLayoutFileAppenderTest.log";
@@ -42,7 +44,7 @@ public class CsvJsonParameterLayoutFileAppenderTest {
     @Rule
     public RuleChain rule = loggerContextRule.withCleanFilesRule(FILE_PATH);
 
-    public void testNoNulCharacters(final String message) throws IOException {
+    public void testNoNulCharacters(final String message, final String expected) throws IOException {
         @SuppressWarnings("resource")
         final LoggerContext loggerContext = loggerContextRule.getLoggerContext();
         final Logger logger = loggerContext.getLogger("com.example");
@@ -63,24 +65,53 @@ public class CsvJsonParameterLayoutFileAppenderTest {
         Assert.assertEquals("File contains " + count0s + " 0x00 byte at indices " + sb, 0, count0s);
         final List<String> readLines = Files.readLines(file, Charset.defaultCharset());
         final String actual = readLines.get(0);
-        Assert.assertTrue(actual, actual.contains(message));
+        // Assert.assertTrue(actual, actual.contains(message));
+        Assert.assertEquals(actual, expected, actual);
         Assert.assertEquals(1, readLines.size());
     }
 
     @Test
-    public void testNoNulCharactersABC() throws IOException {
-        testNoNulCharacters("ABC");
+    public void testNoNulCharactersDoubleQuote() throws IOException {
+        // TODO This does not seem right but there is no NULs. Check Apache Commons CSV.
+        testNoNulCharacters("\"", "\"\"\"\"");
     }
 
     @Test
-    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
     public void testNoNulCharactersJson() throws IOException {
-        testNoNulCharacters("{\"id\":10,\"name\":\"Alice\"}");
+        testNoNulCharacters("{\"id\":10,\"name\":\"Alice\"}", "\"{\"\"id\"\":10,\"\"name\"\":\"\"Alice\"\"}\"");
+    }
+
+    @Test
+    public void testNoNulCharactersOneChar() throws IOException {
+        testNoNulCharacters("A", "A");
+    }
+
+    @Test
+    public void testNoNulCharactersOpenCurly() throws IOException {
+        // TODO Why is the char quoted? Check Apache Commons CSV.
+        testNoNulCharacters("{", "\"{\"");
+    }
+
+    @Test
+    public void testNoNulCharactersOpenParen() throws IOException {
+        // TODO Why is the char quoted? Check Apache Commons CSV.
+        testNoNulCharacters("(", "\"(\"");
+    }
+
+    @Test
+    public void testNoNulCharactersOpenSquare() throws IOException {
+        // TODO Why is the char quoted? Check Apache Commons CSV.
+        testNoNulCharacters("[", "\"[\"");
+    }
+
+    @Test
+    public void testNoNulCharactersThreeChars() throws IOException {
+        testNoNulCharacters("ABC", "ABC");
     }
 
     @Test
-    @Ignore("https://issues.apache.org/jira/browse/LOG4J2-1502")
     public void testNoNulCharactersXml() throws IOException {
-        testNoNulCharacters("<test attr1='val1' attr2=\"value2\">X</test>");
+        testNoNulCharacters("<test attr1='val1' attr2=\"value2\">X</test>",
+                "\"<test attr1='val1' attr2=\"\"value2\"\">X</test>\"");
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f9a5d552/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b901033..10be4c8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -99,6 +99,9 @@
       <action issue="LOG4J2-1235" dev="ggregory" type="fix" due-to="Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky">
         org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy not working correctly.
       </action>
+      <action issue="LOG4J2-1502" dev="ggregory" type="fix" due-to="Sumit Singhal">
+        CsvParameterLayout is inserting NUL character if data starts with {, (, [ or "
+      </action>
       <action issue="LOG4J2-1181" dev="mikes" type="add">
         Scala API.
       </action>