Repository: logging-log4j2
Updated Branches:
  refs/heads/master 69f5da463 -> 310d1d18e


Add ReadOnlyStringMap type support for MDC in ColumnMapping


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

Branch: refs/heads/master
Commit: 310d1d18e503a1306be95a3a659a75e7e8022503
Parents: 69f5da4
Author: Matt Sicker <[email protected]>
Authored: Tue Jan 3 23:39:05 2017 -0600
Committer: Matt Sicker <[email protected]>
Committed: Tue Jan 3 23:39:05 2017 -0600

----------------------------------------------------------------------
 .../apache/logging/log4j/core/appender/db/ColumnMapping.java  | 7 +++++--
 .../log4j/nosql/appender/cassandra/CassandraManager.java      | 4 +++-
 src/site/xdoc/manual/appenders.xml                            | 2 ++
 3 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/310d1d18/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/ColumnMapping.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/ColumnMapping.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/ColumnMapping.java
index c9296c2..c485c21 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/ColumnMapping.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/ColumnMapping.java
@@ -28,6 +28,7 @@ import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Requi
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.spi.ThreadContextStack;
+import org.apache.logging.log4j.util.ReadOnlyStringMap;
 
 /**
  * A configuration element for specifying a database column name mapping.
@@ -46,8 +47,9 @@ public class ColumnMapping {
      */
     private final StringLayout layout;
     /**
-     * Class to convert value to before storing in database. If the type is a 
{@link ThreadContextMap}, then the
-     * MDC will be used. If the type is a {@link ThreadContextStack}, then the 
NDC will be used.
+     * Class to convert value to before storing in database. If the type is 
compatible with {@link ThreadContextMap} or
+     * {@link ReadOnlyStringMap}, then the MDC will be used. If the type is 
compatible with {@link ThreadContextStack},
+     * then the NDC will be used.
      */
     private final Class<?> type;
 
@@ -127,6 +129,7 @@ public class ColumnMapping {
                     .build();
             }
             if (!(layout != null
+                || ReadOnlyStringMap.class.isAssignableFrom(type)
                 || ThreadContextMap.class.isAssignableFrom(type)
                 || ThreadContextStack.class.isAssignableFrom(type))) {
                 throw new IllegalStateException(

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/310d1d18/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/cassandra/CassandraManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/cassandra/CassandraManager.java
 
b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/cassandra/CassandraManager.java
index 75a90dd..4178053 100644
--- 
a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/cassandra/CassandraManager.java
+++ 
b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/cassandra/CassandraManager.java
@@ -33,6 +33,7 @@ import 
org.apache.logging.log4j.core.config.plugins.convert.TypeConverters;
 import org.apache.logging.log4j.core.net.SocketAddress;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.spi.ThreadContextStack;
+import org.apache.logging.log4j.util.ReadOnlyStringMap;
 import org.apache.logging.log4j.util.Strings;
 
 /**
@@ -92,7 +93,8 @@ public class CassandraManager extends AbstractDatabaseManager 
{
     protected void writeInternal(final LogEvent event) {
         for (int i = 0; i < columnMappings.size(); i++) {
             final ColumnMapping columnMapping = columnMappings.get(i);
-            if 
(ThreadContextMap.class.isAssignableFrom(columnMapping.getType())) {
+            if 
(ThreadContextMap.class.isAssignableFrom(columnMapping.getType())
+                || 
ReadOnlyStringMap.class.isAssignableFrom(columnMapping.getType())) {
                 values[i] = event.getContextData().toMap();
             } else if 
(ThreadContextStack.class.isAssignableFrom(columnMapping.getType())) {
                 values[i] = event.getContextStack().asList();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/310d1d18/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml 
b/src/site/xdoc/manual/appenders.xml
index 69fe93b..31c2b93 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -281,6 +281,8 @@
               <td>A list of column mapping configurations. Each column must 
specify a column name. Each column can
                 have a conversion type specified by its fully qualified class 
name. By default, the conversion type is
                 <code>String</code>. If the configured type is 
assignment-compatible with
+                <a class="javadoc" 
href="../log4j-api/apidocs/org/apache/logging/log4j/util/ReadOnlyStringMap.html">ReadOnlyStringMap</a>
+                /
                 <a class="javadoc" 
href="../log4j-api/apidocs/org/apache/logging/log4j/spi/ThreadContextMap.html">ThreadContextMap</a>
                 or
                 <a class="javadoc" 
href="../log4j-api/apidocs/org/apache/logging/log4j/spi/ThreadContextStack.html">ThreadContextStack</a>,

Reply via email to