You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/27 06:52:03 UTC
[35/40] logging-log4j2 git commit: Added
org.apache.logging.log4j.core.layout.CsvParameterLayoutTest.testLogJsonArgument()
for [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or "
Added
org.apache.logging.log4j.core.layout.CsvParameterLayoutTest.testLogJsonArgument()
for [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/ae218df6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ae218df6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ae218df6
Branch: refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure
Commit: ae218df64450d6e3d8744c07d173ed714473de19
Parents: d8d2ac0
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Aug 26 18:01:41 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Aug 26 18:01:41 2016 -0700
----------------------------------------------------------------------
.../core/layout/CsvParameterLayoutTest.java | 59 ++++++++++++++------
1 file changed, 43 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ae218df6/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
index 58ce1bd..f4eddd1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
@@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.csv.CSVFormat;
import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.junit.LoggerContextRule;
@@ -49,19 +50,15 @@ import org.junit.runners.Parameterized;
public class CsvParameterLayoutTest {
@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> data() {
- return Arrays.asList(
- new Object[][]{
- { new LoggerContextRule("csvParamsSync.xml"), },
- { new LoggerContextRule("csvParamsMixedAsync.xml"), },
- }
- );
+ return Arrays.asList(new Object[][] { { new LoggerContextRule("csvParamsSync.xml"), },
+ { new LoggerContextRule("csvParamsMixedAsync.xml"), }, });
}
@Rule
public final LoggerContextRule init;
@Rule
- public final ThreadContextRule threadContextRule = new ThreadContextRule();
+ public final ThreadContextRule threadContextRule = new ThreadContextRule();
public CsvParameterLayoutTest(final LoggerContextRule contextRule) {
this.init = contextRule;
@@ -86,11 +83,9 @@ public class CsvParameterLayoutTest {
assertEquals("text/csv; charset=UTF-8", layout.getContentType());
}
- static void testLayoutNormalApi(final Logger root, final AbstractCsvLayout layout, final boolean messageApi) throws Exception {
- final Map<String, Appender> appenders = root.getAppenders();
- for (final Appender appender : appenders.values()) {
- root.removeAppender(appender);
- }
+ static void testLayoutNormalApi(final Logger root, final AbstractCsvLayout layout, final boolean messageApi)
+ throws Exception {
+ removeAppenders(root);
// set up appender
final ListAppender appender = new ListAppender("List", null, layout, true, false);
appender.start();
@@ -107,10 +102,12 @@ public class CsvParameterLayoutTest {
} else {
logDebugNormalApi(root);
}
-
- // wait until background thread finished processing
- appender.countDownLatch.await(10, TimeUnit.SECONDS);
- assertEquals("Background thread did not finish processing: msg count", 4, appender.getMessages().size());
+ final int msgCount = 4;
+ if (appender.getMessages().size() < msgCount) {
+ // wait until background thread finished processing
+ appender.countDownLatch.await(10, TimeUnit.SECONDS);
+ }
+ assertEquals("Background thread did not finish processing: msg count", msgCount, appender.getMessages().size());
// don't stop appender until background thread is done
appender.stop();
@@ -123,6 +120,13 @@ public class CsvParameterLayoutTest {
Assert.assertEquals("7" + d + "8" + d + "9" + d + "10", list.get(3));
}
+ private static void removeAppenders(final Logger root) {
+ final Map<String, Appender> appenders = root.getAppenders();
+ for (final Appender appender : appenders.values()) {
+ root.removeAppender(appender);
+ }
+ }
+
private static void logDebugNormalApi(final Logger root) {
root.debug("with placeholders: {}{}{}", 1, 2, 3);
root.debug("without placeholders", 2, 3);
@@ -154,4 +158,27 @@ public class CsvParameterLayoutTest {
final Logger root = this.init.getRootLogger();
testLayoutNormalApi(root, CsvParameterLayout.createLayout(CSVFormat.TDF), true);
}
+
+ @Test
+ public void testLogJsonArgument() throws InterruptedException {
+ ListAppender appender = (ListAppender) init.getAppender("List");
+ appender.countDownLatch = new CountDownLatch(4);
+ appender.clear();
+ Logger logger = (Logger) LogManager.getRootLogger();
+ final String json = "{\"id\":10,\"name\":\"Alice\"}";
+ logger.error("log:{}", json);
+ // wait until background thread finished processing
+ final int msgCount = 1;
+ if (appender.getMessages().size() < msgCount) {
+ appender.countDownLatch.await(5, TimeUnit.SECONDS);
+ }
+ assertEquals("Background thread did not finish processing: msg count", msgCount, appender.getMessages().size());
+
+ // don't stop appender until background thread is done
+ appender.stop();
+ final List<String> list = appender.getMessages();
+ final String eventStr = list.get(0).toString();
+ Assert.assertTrue(eventStr, eventStr.contains(json));
+ }
+
}