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>,
