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