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/09/11 06:27:47 UTC
[06/50] logging-log4j2 git commit: LOG4J2-1349: merged branch
LOG4J2-1010&LOG4J2-1447 into branch LOG4J2-1349
LOG4J2-1349: merged branch LOG4J2-1010&LOG4J2-1447 into branch LOG4J2-1349
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/7994789d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/7994789d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/7994789d
Branch: refs/heads/master
Commit: 7994789d2d2cf85dcbb6518d36693d18082961f1
Parents: 5edcfe8 25148ca
Author: rpopma <rp...@apache.org>
Authored: Mon Aug 29 00:11:12 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Aug 29 00:11:12 2016 +0900
----------------------------------------------------------------------
log4j-api-scala_2.10/.gitignore | 3 +
log4j-api-scala_2.10/pom.xml | 150 +++++
.../org/apache/logging/log4j/scala/Logger.scala | 592 +++++++++++++++++++
.../logging/log4j/scala/LoggerMacro.scala | 425 +++++++++++++
.../apache/logging/log4j/scala/Logging.scala | 30 +
.../apache/logging/log4j/scala/LoggerTest.scala | 550 +++++++++++++++++
log4j-api-scala_2.11/.gitignore | 3 +
log4j-api-scala_2.11/pom.xml | 150 +++++
.../org/apache/logging/log4j/scala/Logger.scala | 592 +++++++++++++++++++
.../logging/log4j/scala/LoggerMacro.scala | 425 +++++++++++++
.../apache/logging/log4j/scala/Logging.scala | 30 +
.../apache/logging/log4j/scala/LoggerTest.scala | 550 +++++++++++++++++
log4j-bom/pom.xml | 12 +
.../core/filter/DynamicThresholdFilter.java | 8 +-
.../core/filter/ThreadContextMapFilter.java | 8 +-
.../log4j/core/impl/ContextDataInjector.java | 28 +-
.../core/impl/ContextDataInjectorFactory.java | 6 +
.../core/impl/ThreadContextDataInjector.java | 22 +
.../log4j/core/jackson/Initializers.java | 10 +-
.../log4j/core/jackson/Log4jJsonModule.java | 9 +-
.../core/jackson/Log4jJsonObjectMapper.java | 6 +-
.../log4j/core/jackson/Log4jXmlModule.java | 6 +-
.../core/jackson/Log4jXmlObjectMapper.java | 9 +-
.../log4j/core/jackson/Log4jYamlModule.java | 9 +-
.../core/jackson/Log4jYamlObjectMapper.java | 6 +-
.../ThrowableProxyWithoutStacktraceMixIn.java | 77 +++
.../log4j/core/layout/JacksonFactory.java | 22 +-
.../logging/log4j/core/layout/JsonLayout.java | 14 +-
.../logging/log4j/core/layout/XmlLayout.java | 15 +-
.../logging/log4j/core/layout/YamlLayout.java | 13 +-
.../log4j/core/lookup/ContextMapLookup.java | 8 +-
.../server/JsonInputStreamLogEventBridge.java | 2 +-
.../logging/log4j/MarkerMixInXmlTest.java | 2 +-
.../log4j/core/jackson/LevelMixInJsonTest.java | 2 +-
.../jackson/StackTraceElementMixInTest.java | 2 +-
.../log4j/core/layout/JsonLayoutTest.java | 59 +-
.../log4j/core/layout/LogEventFixtures.java | 6 +-
.../log4j/core/layout/XmlLayoutTest.java | 59 +-
.../log4j/core/layout/YamlLayoutTest.java | 55 +-
.../net/server/AbstractSocketServerTest.java | 4 +-
log4j-samples/pom.xml | 1 +
log4j-samples/scala-api/pom.xml | 65 ++
.../scala-api/src/main/resources/log4j2.xml | 32 +
.../logging/log4j/scalasample/LoggingApp.scala | 31 +
pom.xml | 12 +
src/changes/changes.xml | 6 +
src/site/site.xml | 1 +
src/site/xdoc/manual/layouts.xml.vm | 15 +
src/site/xdoc/manual/scala-api.xml | 91 +++
src/site/xdoc/maven-artifacts.xml.vm | 28 +
src/site/xdoc/runtime-dependencies.xml | 7 +
51 files changed, 4140 insertions(+), 128 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjector.java
----------------------------------------------------------------------
diff --cc log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjector.java
index 30d099e,7fe4c53..e26616d
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjector.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjector.java
@@@ -18,9 -18,8 +18,10 @@@ package org.apache.logging.log4j.core.i
import java.util.List;
+ import org.apache.logging.log4j.core.ContextData;
import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.spi.MutableContextData;
/**
* Responsible for initializing the ContextData of LogEvents. Context data is data that is set by the application to be
@@@ -30,12 -29,17 +31,17 @@@
* </p><p>
* In some asynchronous models, work may be delegated to several threads, while conceptually this work shares the same
* context. In such models, storing context data in {@code ThreadLocal} variables is not convenient or desirable.
- * By specifying a custom {@code ContextDataInjectorFactory}, users can initialize log events with context data from
- * any arbitrary context.
+ * Users can configure the {@code ContextDataInjectorFactory} to provide custom {@code ContextDataInjector} objects,
+ * in order to initialize log events with context data from any arbitrary context.
+ * </p><p>
+ * When providing a custom {@code ContextDataInjector}, be aware that the {@code ContextDataFactory} may be invoked
+ * multiple times by the various components in Log4j that need access to context data.
+ * This includes the object(s) that populate log events, but also various lookups and filters that look at
+ * context data to determine whether an event should be logged.
* </p>
*
+ * @see ContextData
* @see ContextDataInjectorFactory
- * @see org.apache.logging.log4j.core.ContextData
* @see org.apache.logging.log4j.ThreadContext
* @see ThreadContextDataInjector
* @since 2.7
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
----------------------------------------------------------------------
diff --cc log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
index eeaaf4c,1e81f1d..0e31a9a
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
@@@ -106,11 -111,19 +114,18 @@@ public class ThreadContextDataInjecto
// modified.
copyProperties(props, reusable);
- // TODO LOG4J2-1349
-// final MutableContextData immutableCopy = ((AbstractGarbageFreeMutableThreadContext)
-// ThreadContext.getThreadContextMap()).getContextData();
-// reusable.putAll(immutableCopy);
+ final ContextData immutableCopy = ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap())
+ .getMutableContextData();
+ reusable.putAll(immutableCopy);
return reusable;
}
+
+ @Override
+ public ContextData rawContextData() {
+ // TODO LOG4J2-1349
+ //return ((AbstractGarbageFreeMutableThreadContext) ThreadContext.getThreadContextMap()).getContextData();
+ return null;
+ }
}
/**
@@@ -133,19 -146,28 +148,26 @@@
*/
@Override
public MutableContextData injectContextData(final List<Property> props, final MutableContextData reusable) {
- // TODO LOG4J2-1349
-
-// // If there are no configuration properties we want to just return the ThreadContext's MutableContextData:
-// // it is a copy-on-write data structure so we are sure ThreadContext changes will not affect our copy.
-// final MutableContextData immutableCopy = ((AbstractCopyOnWriteMutableThreadContext)
-// ThreadContext.getThreadContextMap()).getContextData();
-// if (props == null || props.isEmpty()) {
-// return immutableCopy;
-// }
-// // However, if the list of Properties is non-empty we need to combine the properties and the ThreadContext
-// // data. In that case we will copy the key-value pairs into the specified reusable MutableContextData.
-// copyProperties(props, reusable);
-// reusable.putAll(immutableCopy);
+ // If there are no configuration properties we want to just return the ThreadContext's MutableContextData:
+ // it is a copy-on-write data structure so we are sure ThreadContext changes will not affect our copy.
+ final MutableContextData immutableCopy =
+ ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap()).getMutableContextData();
+ if (props == null || props.isEmpty()) {
+ return immutableCopy;
+ }
+ // However, if the list of Properties is non-empty we need to combine the properties and the ThreadContext
+ // data. In that case we will copy the key-value pairs into the specified reusable MutableContextData.
+ copyProperties(props, reusable);
+ reusable.putAll(immutableCopy);
return reusable;
}
+
+ @Override
+ public ContextData rawContextData() {
+ // TODO LOG4J2-1349
+ //return ((AbstractCopyOnWriteMutableThreadContext) ThreadContext.getThreadContextMap()).getContextData();
+ return null;
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7994789d/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
----------------------------------------------------------------------
diff --cc log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
index eec5ad3,bfbc5ea..6bffb2b
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
@@@ -17,13 -17,11 +17,12 @@@
package org.apache.logging.log4j.core.lookup;
import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.ContextData;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
- import org.apache.logging.log4j.core.impl.ContextDataFactory;
import org.apache.logging.log4j.core.impl.ContextDataInjector;
import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
+import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.spi.MutableContextData;
/**
* Looks up keys from the context. By default this is the {@link ThreadContext}, but users may