Repository: logging-log4j2
Updated Branches:
  refs/heads/release-2.x 733ff9acd -> 83b9c482f


Add a test that shows string substitution works in the JDBC Appender.

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

Branch: refs/heads/release-2.x
Commit: 83b9c482f6ce87a49063e63e1dfd3ae621e0b403
Parents: 733ff9a
Author: Gary Gregory <[email protected]>
Authored: Mon Oct 22 19:48:47 2018 -0600
Committer: Gary Gregory <[email protected]>
Committed: Mon Oct 22 19:48:47 2018 -0600

----------------------------------------------------------------------
 .../appender/db/jdbc/JdbcDatabaseManager.java   |  6 ++-
 .../JdbcAppenderStringSubstitutionTest.java     | 54 ++++++++++++++++++++
 .../db/jdbc/log4j2-jdbc-string-substitution.xml | 43 ++++++++++++++++
 3 files changed, 102 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/83b9c482/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 944a15b..4f82805 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
@@ -116,7 +116,11 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
                     "Cannot write logging event or flush buffer; JDBC manager 
cannot connect to the database.", e);
         }
     }
-
+    
+    public String getSqlStatement() {
+        return sqlStatement;
+    }
+    
     @Deprecated
     @Override
     protected void writeInternal(final LogEvent event) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/83b9c482/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderStringSubstitutionTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderStringSubstitutionTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderStringSubstitutionTest.java
new file mode 100644
index 0000000..f77ef56
--- /dev/null
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderStringSubstitutionTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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 org.apache.logging.log4j.junit.LoggerContextRule;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class JdbcAppenderStringSubstitutionTest {
+
+    private static final String VALUE = "MyTableName";
+    private static final String KEY = "Test.TableName";
+
+    public JdbcAppenderStringSubstitutionTest() {
+        super();
+        System.setProperty(KEY, VALUE);
+    }
+
+    @AfterClass
+    public static void afterClass() {
+        System.getProperties().remove(KEY);
+    }
+    
+    @Rule
+       public final LoggerContextRule rule = new 
LoggerContextRule("org/apache/logging/log4j/core/appender/db/jdbc/log4j2-jdbc-string-substitution.xml");
+
+    @Test
+    public void test() throws Exception {
+        JdbcAppender appender = rule.getAppender("databaseAppender", 
JdbcAppender.class);
+        Assert.assertNotNull(appender);
+        JdbcDatabaseManager manager = appender.getManager();
+        Assert.assertNotNull(manager);
+        String sqlStatement = manager.getSqlStatement();
+        Assert.assertFalse(sqlStatement, sqlStatement.contains(KEY));
+        Assert.assertTrue(sqlStatement, sqlStatement.contains(VALUE));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/83b9c482/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-jdbc-string-substitution.xml
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-jdbc-string-substitution.xml
 
b/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-jdbc-string-substitution.xml
new file mode 100644
index 0000000..836c4b4
--- /dev/null
+++ 
b/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc/log4j2-jdbc-string-substitution.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="${sys:Test.TableName}" 
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>

Reply via email to