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 2018/10/16 23:24:39 UTC

logging-log4j2 git commit: [LOG4J2-2466] ColumnMapping literal not working.

Repository: logging-log4j2
Updated Branches:
  refs/heads/release-2.x beed8107e -> fc5401d40


[LOG4J2-2466] ColumnMapping literal not working.

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

Branch: refs/heads/release-2.x
Commit: fc5401d40dcb8eddbabe67147f6b3e242478fc47
Parents: beed810
Author: Gary Gregory <ga...@gmail.com>
Authored: Tue Oct 16 17:24:35 2018 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Tue Oct 16 17:24:35 2018 -0600

----------------------------------------------------------------------
 .../appender/db/jdbc/JdbcDatabaseManager.java   | 24 +++---
 .../jdbc/DriverManagerConnectionSourceTest.java |  4 +-
 .../JdbcAppenderColumnMappingLiteralTest.java   | 88 ++++++++++++++++++++
 .../JdbcAppenderColumnMappingPatternTest.java   |  2 +-
 .../db/jdbc/JdbcAppenderH2DataSourceTest.java   |  2 +-
 .../jdbc/JdbcAppenderH2FactoryMethodTest.java   |  4 +-
 .../JdbcAppenderMapMessageDataSourceTest.java   |  2 +-
 .../core/appender/db/jdbc/JdbcH2TestHelper.java | 48 +++++++----
 .../jdbc/log4j2-dm-column-mapping-literal.xml   | 43 ++++++++++
 .../jdbc/PoolingDriverConnectionSourceTest.java |  8 +-
 src/changes/changes.xml                         |  5 +-
 11 files changed, 194 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
index 2952288..944a15b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
@@ -27,6 +27,7 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.sql.Types;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -81,13 +82,16 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager {
     }
 
     @Override
-    protected void startupInternal() throws Exception {
-        this.connection = this.connectionSource.getConnection();
-        final DatabaseMetaData metaData = this.connection.getMetaData();
-        this.isBatchSupported = metaData.supportsBatchUpdates();
-        logger().debug("Closing Connection {}", this.connection);
-        Closer.closeSilently(this.connection);
-    }
+	protected void startupInternal() throws Exception {
+		this.connection = this.connectionSource.getConnection();
+		try {
+			final DatabaseMetaData metaData = this.connection.getMetaData();
+			this.isBatchSupported = metaData.supportsBatchUpdates();
+		} finally {
+			logger().debug("Closing Connection {}", this.connection);
+			Closer.closeSilently(this.connection);
+		}
+	}
 
     @Override
     protected boolean shutdownInternal() {
@@ -216,7 +220,8 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager {
             if (this.connection != null && !this.connection.isClosed()) {
                 if (this.isBatchSupported) {
                     logger().debug("Executing batch PreparedStatement {}", this.statement);
-                    this.statement.executeBatch();
+                    int[] result = this.statement.executeBatch();
+                    logger().debug("Batch result: {}", Arrays.toString(result));
                 }
                 logger().debug("Committing Connection {}", this.connection);
                 this.connection.commit();
@@ -370,8 +375,7 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager {
                 if (Strings.isNotEmpty(mapping.getLiteralValue())) {
                     logger().trace("Adding INSERT VALUES literal for ColumnMapping[{}]: {}={} ", i, mappingName, mapping.getLiteralValue());
                     sb.append(mapping.getLiteralValue());
-                }
-                if (Strings.isNotEmpty(mapping.getParameter())) {
+                } else if (Strings.isNotEmpty(mapping.getParameter())) {
                     logger().trace("Adding INSERT VALUES parameter for ColumnMapping[{}]: {}={} ", i, mappingName, mapping.getParameter());
                     sb.append(mapping.getParameter());
                     columnMappings.add(mapping);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSourceTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSourceTest.java
index 5a4835a..c6b2de1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSourceTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSourceTest.java
@@ -36,7 +36,7 @@ public class DriverManagerConnectionSourceTest {
         };
         // @formatter:off
         DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setProperties(properties)
             .build();
         // @formatter:on
@@ -49,7 +49,7 @@ public class DriverManagerConnectionSourceTest {
     public void testH2UserAndPassword() throws SQLException {
         // @formatter:off
         DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .build();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingLiteralTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingLiteralTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingLiteralTest.java
new file mode 100644
index 0000000..5df2629
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingLiteralTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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.db.jdbc;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.junit.JdbcRule;
+import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.test.RuleChainFactory;
+import org.h2.util.IOUtils;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+
+public class JdbcAppenderColumnMappingLiteralTest {
+
+	@Rule
+	public final RuleChain rules;
+	private final JdbcRule jdbcRule;
+
+	public JdbcAppenderColumnMappingLiteralTest() {
+		this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_TMPDIR,
+				"CREATE TABLE dsMappingLogEntry (id INTEGER IDENTITY, level VARCHAR(10), logger VARCHAR(255), message VARCHAR(1024), exception CLOB)",
+				"DROP TABLE dsMappingLogEntry"));
+	}
+
+	protected JdbcAppenderColumnMappingLiteralTest(final JdbcRule jdbcRule) {
+		this.rules = RuleChainFactory.create(jdbcRule, new LoggerContextRule(
+				"org/apache/logging/log4j/core/appender/db/jdbc/log4j2-dm-column-mapping-literal.xml"));
+		this.jdbcRule = jdbcRule;
+	}
+
+	@Test
+	public void test() throws Exception {
+		try (Connection connection = jdbcRule.getConnection()) {
+			final Error exception = new Error("This is a test.");
+			final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+			try (final PrintWriter writer = new PrintWriter(outputStream)) {
+				exception.printStackTrace(writer);
+			}
+			final String stackTrace = outputStream.toString();
+
+			final Logger logger = LogManager.getLogger(this.getClass().getName() + ".testDataSourceConfig");
+			logger.trace("Data source logged message 01.");
+			logger.fatal("Error from data source 02.", exception);
+			Thread.sleep(1000);
+			try (final Statement statement = connection.createStatement();
+					final ResultSet resultSet = statement.executeQuery("SELECT * FROM dsMappingLogEntry ORDER BY id")) {
+
+				assertTrue("There should be at least one row.", resultSet.next());
+
+				assertEquals("The level column is not correct (1).", "FATAL", resultSet.getNString("level"));
+				assertEquals("The logger column is not correct (1).", logger.getName(), resultSet.getNString("logger"));
+				assertEquals("The message column is not correct (1).", "Hello World!", resultSet.getString("message"));
+				assertEquals("The exception column is not correct (1).", stackTrace,
+						IOUtils.readStringAndClose(resultSet.getNClob("exception").getCharacterStream(), -1));
+
+				assertFalse("There should not be two rows.", resultSet.next());
+			}
+		}
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingPatternTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingPatternTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingPatternTest.java
index f4b1220..2491dae 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingPatternTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderColumnMappingPatternTest.java
@@ -43,7 +43,7 @@ public class JdbcAppenderColumnMappingPatternTest {
 	private final JdbcRule jdbcRule;
 
 	public JdbcAppenderColumnMappingPatternTest() {
-		this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE,
+		this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
 				"CREATE TABLE dsMappingLogEntry (id INTEGER IDENTITY, level VARCHAR(10), logger VARCHAR(255), message VARCHAR(1024), exception CLOB)",
 				"DROP TABLE dsMappingLogEntry"));
 	}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2DataSourceTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2DataSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2DataSourceTest.java
index acd14ca..4a90574 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2DataSourceTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2DataSourceTest.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.junit.JdbcRule;
  */
 public class JdbcAppenderH2DataSourceTest extends AbstractJdbcAppenderDataSourceTest {
     public JdbcAppenderH2DataSourceTest() {
-        super(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE,
+        super(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
                 "CREATE TABLE dsLogEntry ("
                         + "id INTEGER IDENTITY, eventDate DATETIME, literalColumn VARCHAR(255), level NVARCHAR(10), "
                         + "logger NVARCHAR(255), message VARCHAR(1024), exception NCLOB, anotherDate TIMESTAMP" + ")",

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2FactoryMethodTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2FactoryMethodTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2FactoryMethodTest.java
index c79b6ba..a26faec 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2FactoryMethodTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderH2FactoryMethodTest.java
@@ -26,7 +26,7 @@ import org.apache.logging.log4j.junit.JdbcRule;
  */
 public class JdbcAppenderH2FactoryMethodTest extends AbstractJdbcAppenderFactoryMethodTest {
     public JdbcAppenderH2FactoryMethodTest() {
-        super(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE,
+        super(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
                 "CREATE TABLE fmLogEntry ("
                         + "id INTEGER IDENTITY, eventDate DATETIME, literalColumn VARCHAR(255), level NVARCHAR(10), "
                         + "logger NVARCHAR(255), message VARCHAR(1024), exception NCLOB, anotherDate TIMESTAMP" + ")",
@@ -34,6 +34,6 @@ public class JdbcAppenderH2FactoryMethodTest extends AbstractJdbcAppenderFactory
     }
 
     public static Connection getConnection() throws SQLException {
-        return JdbcH2TestHelper.getConnection();
+        return JdbcH2TestHelper.getConnectionMem();
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java
index c186537..a45139b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java
@@ -54,7 +54,7 @@ public class JdbcAppenderMapMessageDataSourceTest {
     private final JdbcRule jdbcRule;
 
     public JdbcAppenderMapMessageDataSourceTest() {
-        this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE,
+        this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
         // @formatter:off
                 "CREATE TABLE dsLogEntry (Id INTEGER IDENTITY, ColumnA VARCHAR(255), ColumnB VARCHAR(255))",
                 "DROP TABLE dsLogEntry"));

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcH2TestHelper.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcH2TestHelper.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcH2TestHelper.java
index 1c289a0..7afa2cf 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcH2TestHelper.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcH2TestHelper.java
@@ -20,24 +20,44 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
+import org.apache.commons.lang3.SystemUtils;
+
 public class JdbcH2TestHelper {
 
 	/**
 	 * A JDBC connection string for an H2 in-memory database.
 	 */
-    static final String CONNECTION_STRING = "jdbc:h2:mem:Log4j";
-    static final String USER_NAME = "sa";
-    static final String PASSWORD = "";
-    
-    public static ConnectionSource TEST_CONFIGURATION_SOURCE = new AbstractConnectionSource() {
-        @Override
-        public Connection getConnection() throws SQLException {
-            return JdbcH2TestHelper.getConnection();
-        }
-    };
-
-    public static Connection getConnection() throws SQLException {
-        return DriverManager.getConnection(CONNECTION_STRING, USER_NAME, PASSWORD);
-    }
+	static final String CONNECTION_STRING_MEM = "jdbc:h2:mem:Log4j";
+
+	/**
+	 * A JDBC connection string for an H2 database in the Java temporary directory.
+	 */
+	static final String CONNECTION_STRING_TMPDIR = "jdbc:h2:" + SystemUtils.JAVA_IO_TMPDIR
+			+ "/h2/test_log4j;TRACE_LEVEL_SYSTEM_OUT=0";
+
+	static final String USER_NAME = "sa";
+	static final String PASSWORD = "";
+
+	public static ConnectionSource TEST_CONFIGURATION_SOURCE_MEM = new AbstractConnectionSource() {
+		@Override
+		public Connection getConnection() throws SQLException {
+			return JdbcH2TestHelper.getConnectionMem();
+		}
+	};
+
+	public static ConnectionSource TEST_CONFIGURATION_SOURCE_TMPDIR = new AbstractConnectionSource() {
+		@Override
+		public Connection getConnection() throws SQLException {
+			return JdbcH2TestHelper.getConnectionTmpDir();
+		}
+	};
+
+	public static Connection getConnectionMem() throws SQLException {
+		return DriverManager.getConnection(CONNECTION_STRING_MEM, USER_NAME, PASSWORD);
+	}
+
+	public static Connection getConnectionTmpDir() throws SQLException {
+		return DriverManager.getConnection(CONNECTION_STRING_TMPDIR, USER_NAME, PASSWORD);
+	}
 
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-dm-column-mapping-literal.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-dm-column-mapping-literal.xml b/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-dm-column-mapping-literal.xml
new file mode 100644
index 0000000..9ecd04b
--- /dev/null
+++ b/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-dm-column-mapping-literal.xml
@@ -0,0 +1,43 @@
+<?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="ERROR">
+
+  <Appenders>
+    <Console name="STDOUT">
+      <PatternLayout pattern="%C{1.} %m %level MDC%X%n"/>
+    </Console>
+    <Jdbc name="databaseAppender" tableName="dsMappingLogEntry" ignoreExceptions="false">
+      <DriverManager connectionString="jdbc:h2:${sys:java.io.tmpdir}/h2/test_log4j;TRACE_LEVEL_SYSTEM_OUT=0" userName="sa" password="" />
+      <ColumnMapping name="level" pattern="%level" />
+      <ColumnMapping name="logger" pattern="%logger" />
+      <ColumnMapping name="message" literal="'Hello World!'" />
+      <ColumnMapping name="exception" pattern="%ex{full}" />
+    </Jdbc>
+  </Appenders>
+
+  <Loggers>
+    <Logger name="org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppenderColumnMappingLiteralTest" level="DEBUG" additivity="false">
+      <AppenderRef ref="databaseAppender" />
+    </Logger>
+
+    <Root level="FATAL">
+      <AppenderRef ref="STDOUT"/>
+    </Root>
+  </Loggers>
+
+</Configuration>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/PoolingDriverConnectionSourceTest.java
----------------------------------------------------------------------
diff --git a/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/PoolingDriverConnectionSourceTest.java b/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/PoolingDriverConnectionSourceTest.java
index 02bcc86..80496f6 100644
--- a/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/PoolingDriverConnectionSourceTest.java
+++ b/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/PoolingDriverConnectionSourceTest.java
@@ -36,7 +36,7 @@ public class PoolingDriverConnectionSourceTest {
         };
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setProperties(properties)
             .build();
         openAndClose(source);
@@ -52,7 +52,7 @@ public class PoolingDriverConnectionSourceTest {
         };
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setProperties(properties)
             .setPoolName("MyPoolName")
             .build();
@@ -63,7 +63,7 @@ public class PoolingDriverConnectionSourceTest {
     public void testH2UserAndPassword() throws SQLException {
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .build();
@@ -84,7 +84,7 @@ public class PoolingDriverConnectionSourceTest {
     public void testH2UserPasswordAndPoolName() throws SQLException {
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .setPoolName("MyPoolName")

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc5401d4/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e389d25..0dda1f9 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -79,9 +79,12 @@
       <action issue="LOG4J2-2472" dev="ggregory" type="update">
         Update mongo-java-driver 3 from 3.8.0 to 3.8.2.
       </action>
-      <action issue="LOG4J2-2472" dev="ggregory" type="fix">
+      <action issue="LOG4J2-2413" dev="ggregory" type="fix" due-to="Andres Luuk, Gary Gregory">
         Exceptions are added to all columns when a JDBC Appender's ColumnMapping uses a Pattern.
       </action>
+      <action issue="LOG4J2-2466" dev="ggregory" type="fix" due-to="Paolo Bonanomi, Gary Gregory">
+        ColumnMapping literal not working.
+      </action>
     </release>
     <release version="2.11.1" date="2018-07-22" description="GA Release 2.11.1">
       <action issue="LOG4J2-2389" dev="rgoers" type="fix" due-to="Liu Wen">