logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgo...@apache.org
Subject svn commit: r1555400 - in /logging/log4j/log4j2/trunk: log4j-api/src/main/java/org/apache/logging/log4j/ log4j-api/src/main/java/org/apache/logging/log4j/simple/ log4j-api/src/main/java/org/apache/logging/log4j/spi/ log4j-api/src/test/java/org/apache/l...
Date Sat, 04 Jan 2014 18:25:20 GMT
Author: rgoers
Date: Sat Jan  4 18:25:20 2014
New Revision: 1555400

URL: http://svn.apache.org/r1555400
Log:
LOG4J2-459 - Set external context when constructing the LoggerContext

Added:
    logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-webvar.xml
Modified:
    logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
    logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
    logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java
    logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/TestLoggerContextFactory.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/WebLookupTest.java
    logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLoggerContextFactory.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
Sat Jan  4 18:25:20 2014
@@ -139,7 +139,7 @@ public class LogManager {
      * @return  The current LoggerContext.
      */
     public static LoggerContext getContext() {
-        return factory.getContext(LogManager.class.getName(), null, true);
+        return factory.getContext(LogManager.class.getName(), null, null, true);
     }
 
     /**
@@ -152,7 +152,7 @@ public class LogManager {
      * @return a LoggerContext.
      */
     public static LoggerContext getContext(final boolean currentContext) {
-        return factory.getContext(LogManager.class.getName(), null, currentContext);
+        return factory.getContext(LogManager.class.getName(), null, null, currentContext,
null);
     }
 
     /**
@@ -167,7 +167,24 @@ public class LogManager {
      * @return a LoggerContext.
      */
     public static LoggerContext getContext(final ClassLoader loader, final boolean currentContext)
{
-        return factory.getContext(LogManager.class.getName(), loader, currentContext);
+        return factory.getContext(LogManager.class.getName(), loader, null, currentContext);
+    }
+
+    /**
+     * Returns a LoggerContext.
+     *
+     * @param loader The ClassLoader for the context. If null the context will attempt to
determine the appropriate
+     * ClassLoader.
+     * @param currentContext if false the LoggerContext appropriate for the caller of this
method is returned. For
+     * example, in a web application if the caller is a class in WEB-INF/lib then one LoggerContext
may be
+     * returned and if the caller is a class in the container's classpath then a different
LoggerContext may be
+     * returned. If true then only a single LoggerContext will be returned.
+     * @param externalContext An external context (such as a ServletContext) to be associated
with the LoggerContext.
+     * @return a LoggerContext.
+     */
+    public static LoggerContext getContext(final ClassLoader loader, final boolean currentContext,
+                                           final Object externalContext) {
+        return factory.getContext(LogManager.class.getName(), loader, externalContext, currentContext);
     }
 
     /**
@@ -184,7 +201,25 @@ public class LogManager {
      */
     public static LoggerContext getContext(final ClassLoader loader, final boolean currentContext,
                                            final URI configLocation) {
-        return factory.getContext(LogManager.class.getName(), loader, currentContext, configLocation);
+        return factory.getContext(LogManager.class.getName(), loader, null, currentContext,
configLocation);
+    }
+
+
+    /**
+     * Returns a LoggerContext.
+     *
+     * @param loader The ClassLoader for the context. If null the context will attempt to
determine the appropriate
+     * ClassLoader.
+     * @param currentContext if false the LoggerContext appropriate for the caller of this
method is returned. For
+     * example, in a web application if the caller is a class in WEB-INF/lib then one LoggerContext
may be
+     * returned and if the caller is a class in the container's classpath then a different
LoggerContext may be
+     * returned. If true then only a single LoggerContext will be returned.
+     * @param configLocation The URI for the configuration to use.
+     * @return a LoggerContext.
+     */
+    public static LoggerContext getContext(final ClassLoader loader, final boolean currentContext,
+                                           final Object externalContext, final URI configLocation)
{
+        return factory.getContext(LogManager.class.getName(), loader, externalContext, currentContext,
configLocation);
     }
 
     /**
@@ -197,7 +232,7 @@ public class LogManager {
      * @return a LoggerContext.
      */
     protected static LoggerContext getContext(final String fqcn, final boolean currentContext)
{
-        return factory.getContext(fqcn, null, currentContext);
+        return factory.getContext(fqcn, null, null, currentContext);
     }
 
     /**
@@ -213,7 +248,7 @@ public class LogManager {
      */
     protected static LoggerContext getContext(final String fqcn, final ClassLoader loader,
                                               final boolean currentContext) {
-        return factory.getContext(fqcn, loader, currentContext);
+        return factory.getContext(fqcn, loader, null, currentContext);
     }
 
     /**
@@ -384,7 +419,7 @@ public class LogManager {
      */
     public static Logger getLogger(final String name) {
         final String actualName = name != null ? name : getClassName(2);
-        return factory.getContext(LogManager.class.getName(), null, false).getLogger(actualName);
+        return factory.getContext(LogManager.class.getName(), null, null, false).getLogger(actualName);
     }
 
     /**
@@ -397,7 +432,7 @@ public class LogManager {
      */
     public static Logger getLogger(final String name, final MessageFactory messageFactory)
{
         final String actualName = name != null ? name : getClassName(2);
-        return factory.getContext(LogManager.class.getName(), null, false).getLogger(actualName,
messageFactory);
+        return factory.getContext(LogManager.class.getName(), null, null, false).getLogger(actualName,
messageFactory);
     }
 
     /**
@@ -408,7 +443,7 @@ public class LogManager {
      * @return The Logger.
      */
     protected static Logger getLogger(final String fqcn, final String name) {
-        return factory.getContext(fqcn, null, false).getLogger(name);
+        return factory.getContext(fqcn, null, null, false).getLogger(name);
     }
 
     /**

Modified: logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
Sat Jan  4 18:25:20 2014
@@ -29,13 +29,14 @@ public class SimpleLoggerContextFactory 
     private static LoggerContext context = new SimpleLoggerContext();
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext) {
         return context;
     }
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext,
-                                    final URI configLocation) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext, final URI configLocation)
{
         return context;
     }
 

Modified: logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java
Sat Jan  4 18:25:20 2014
@@ -30,9 +30,10 @@ public interface LoggerContextFactory {
      * @param loader The ClassLoader to use or null.
      * @param currentContext If true returns the current Context, if false returns the Context
appropriate
      * for the caller if a more appropriate Context can be determined.
+     * @param externalContext An external context (such as a ServletContext) to be associated
with the LoggerContext.
      * @return The LoggerContext.
      */
-    LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext);
+    LoggerContext getContext(String fqcn, ClassLoader loader, Object externalContext, boolean
currentContext);
 
     /**
      * Creates a {@link LoggerContext}.
@@ -42,9 +43,11 @@ public interface LoggerContextFactory {
      * @param currentContext If true returns the current Context, if false returns the Context
appropriate
      * for the caller if a more appropriate Context can be determined.
      * @param configLocation The location of the configuration for the LoggerContext.
+     * @param externalContext An external context (such as a ServletContext) to be associated
with the LoggerContext.
      * @return The LoggerContext.
      */
-    LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext, URI
configLocation);
+    LoggerContext getContext(String fqcn, ClassLoader loader, Object externalContext, boolean
currentContext,
+                             URI configLocation);
 
     /**
      * Removes knowledge of a LoggerContext.

Modified: logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/TestLoggerContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/TestLoggerContextFactory.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/TestLoggerContextFactory.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-api/src/test/java/org/apache/logging/log4j/TestLoggerContextFactory.java
Sat Jan  4 18:25:20 2014
@@ -29,13 +29,14 @@ public class TestLoggerContextFactory im
     private static LoggerContext context = new TestLoggerContext();
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext) {
         return context;
     }
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext,
-                                    final URI configLocation) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext, final URI configLocation)
{
         return context;
     }
 

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
Sat Jan  4 18:25:20 2014
@@ -100,13 +100,11 @@ public final class Configurator {
                                            final Object externalContext) {
 
         try {
-            final org.apache.logging.log4j.spi.LoggerContext context = LogManager.getContext(loader,
false, configLocation);
+            final org.apache.logging.log4j.spi.LoggerContext context = LogManager.getContext(loader,
false,
+                externalContext, configLocation);
             if (context instanceof LoggerContext) {
                 final LoggerContext ctx = (LoggerContext) context;
                 ContextAnchor.THREAD_CONTEXT.set(ctx);
-                if (externalContext != null) {
-                    ctx.setExternalContext(externalContext);
-                }
                 final Configuration config = ConfigurationFactory.getInstance().getConfiguration(name,
configLocation);
                 ctx.start(config);
                 ContextAnchor.THREAD_CONTEXT.remove();
@@ -129,6 +127,21 @@ public final class Configurator {
      */
     public static LoggerContext initialize(final ClassLoader loader,
                                            final ConfigurationFactory.ConfigurationSource
source) {
+        return initialize(loader, source, null);
+    }
+
+    /**
+     * Initializes the Logging Context.
+     * @param loader The ClassLoader for the Context (or null).
+     * @param source The InputSource for the configuration.
+     * @param externalContext The external context to be attached to the LoggerContext.
+     * @return The LoggerContext.
+     */
+
+    public static LoggerContext initialize(final ClassLoader loader,
+                                           final ConfigurationFactory.ConfigurationSource
source,
+                                           final Object externalContext)
+    {
 
         try {
             URI configLocation = null;
@@ -137,7 +150,8 @@ public final class Configurator {
             } catch (final Exception ex) {
                 // Invalid source location.
             }
-            final org.apache.logging.log4j.spi.LoggerContext context = LogManager.getContext(loader,
false, configLocation);
+            final org.apache.logging.log4j.spi.LoggerContext context = LogManager.getContext(loader,
false,
+                externalContext, configLocation);
             if (context instanceof LoggerContext) {
                 final LoggerContext ctx = (LoggerContext) context;
                 ContextAnchor.THREAD_CONTEXT.set(ctx);

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jContextFactory.java
Sat Jan  4 18:25:20 2014
@@ -76,11 +76,14 @@ public class Log4jContextFactory impleme
      * @param loader The ClassLoader to use or null.
      * @param currentContext If true returns the current Context, if false returns the Context
appropriate
      * for the caller if a more appropriate Context can be determined.
+     * @param externalContext An external context (such as a ServletContext) to be associated
with the LoggerContext.
      * @return The LoggerContext.
      */
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext) {
         final LoggerContext ctx = selector.getContext(fqcn, loader, currentContext);
+        ctx.setExternalContext(externalContext);
         if (ctx.getStatus() == LoggerContext.Status.INITIALIZED) {
             ctx.start();
         }
@@ -91,15 +94,19 @@ public class Log4jContextFactory impleme
      * Load the LoggerContext using the ContextSelector.
      * @param fqcn The fully qualified class name of the caller.
      * @param loader The ClassLoader to use or null.
+     * @param externalContext An external context (such as a ServletContext) to be associated
with the LoggerContext.
      * @param currentContext If true returns the current Context, if false returns the Context
appropriate
      * for the caller if a more appropriate Context can be determined.
      * @param configLocation The location of the configuration for the LoggerContext.
      * @return The LoggerContext.
      */
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext,
-            final URI configLocation) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext, final URI configLocation)
{
         final LoggerContext ctx = selector.getContext(fqcn, loader, currentContext, configLocation);
+        if (externalContext != null && ctx.getExternalContext() == null) {
+            ctx.setExternalContext(externalContext);
+        }
         if (ctx.getStatus() == LoggerContext.Status.INITIALIZED) {
             ctx.start();
         }

Modified: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/WebLookupTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/WebLookupTest.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/WebLookupTest.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/WebLookupTest.java
Sat Jan  4 18:25:20 2014
@@ -16,7 +16,9 @@
  */
 package org.apache.logging.log4j.core.web;
 
+import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.FileAppender;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.impl.ContextAnchor;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
@@ -29,12 +31,15 @@ import javax.servlet.UnavailableExceptio
 
 import org.springframework.mock.web.MockServletContext;
 
+import java.util.Map;
+
 import static org.junit.Assert.*;
 
 public class WebLookupTest {
 
     @Test
     public void testLookup() throws Exception {
+        ContextAnchor.THREAD_CONTEXT.remove();
         ServletContext servletContext = new MockServletContext();
         servletContext.setAttribute("TestAttr", "AttrValue");
         servletContext.setInitParameter("TestParam", "ParamValue");
@@ -46,6 +51,7 @@ public class WebLookupTest {
             initializer.setLoggerContext();
             LoggerContext ctx = ContextAnchor.THREAD_CONTEXT.get();
             assertNotNull("No LoggerContext", ctx);
+            assertNotNull("No ServletContext", ctx.getExternalContext());
             Configuration config = ctx.getConfiguration();
             assertNotNull("No Configuration", config);
             StrSubstitutor substitutor = config.getStrSubstitutor();
@@ -65,6 +71,36 @@ public class WebLookupTest {
         } catch (final UnavailableException e) {
             fail("Failed to initialize Log4j properly." + e.getMessage());
         }
+        initializer.deinitialize();
+        ContextAnchor.THREAD_CONTEXT.remove();
+    }
+
+    @Test
+    public void testLookup2() throws Exception {
+        ContextAnchor.THREAD_CONTEXT.remove();
+        ServletContext servletContext = new MockServletContext();
+        servletContext.setAttribute("TestAttr", "AttrValue");
+        servletContext.setInitParameter("myapp.logdir", "target");
+        servletContext.setAttribute("Name1", "Ben");
+        servletContext.setInitParameter("Name2", "Jerry");
+        servletContext.setInitParameter("log4jConfiguration", "log4j-webvar.xml");
+        Log4jWebInitializer initializer = Log4jWebInitializerImpl.getLog4jWebInitializer(servletContext);
+        initializer.initialize();
+        initializer.setLoggerContext();
+        LoggerContext ctx = ContextAnchor.THREAD_CONTEXT.get();
+        assertNotNull("No LoggerContext", ctx);
+        assertNotNull("No ServletContext", ctx.getExternalContext());
+        Configuration config = ctx.getConfiguration();
+        assertNotNull("No Configuration", config);
+        Map<String, Appender> appenders = config.getAppenders();
+        for (Map.Entry<String, Appender> entry : appenders.entrySet()) {
+            if (entry.getKey().equals("file")) {
+                FileAppender fa = (FileAppender) entry.getValue();
+                assertTrue("target/myapp.log".equals(fa.getFileName()));
+            }
+        }
+        initializer.deinitialize();
+        ContextAnchor.THREAD_CONTEXT.remove();
     }
 
 }

Added: logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-webvar.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-webvar.xml?rev=1555400&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-webvar.xml (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-webvar.xml Sat Jan  4 18:25:20
2014
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+  <Appenders>
+    <File name="file" fileName="${web:initParam.myapp.logdir}/myapp.log" append="true">
+      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+    </File>
+  </Appenders>
+  <Loggers>
+    <Root level="warn">
+      <AppenderRef ref="file"/>
+    </Root>
+  </Loggers>
+</Configuration>
\ No newline at end of file

Modified: logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLoggerContextFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLoggerContextFactory.java?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLoggerContextFactory.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLoggerContextFactory.java
Sat Jan  4 18:25:20 2014
@@ -43,13 +43,14 @@ public class SLF4JLoggerContextFactory i
     }
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext) {
         return context;
     }
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final boolean
currentContext,
-                                    final URI configLocation) {
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object
externalContext,
+                                    final boolean currentContext, final URI configLocation)
{
         return context;
     }
 

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1555400&r1=1555399&r2=1555400&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Sat Jan  4 18:25:20 2014
@@ -21,6 +21,9 @@
   </properties>
   <body>
     <release version="2.0-RC1" date="2013-MM-DD" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-459" dev="rgoers" type="fix">
+        Set external context when constructing the LoggerContext.
+      </action>
       <action issue="LOG4J2-466" dev="rpopma" type="fix" due-to="Jan Tepke">
         Cannot load log4j2 config file if path contains plus '+' characters.
       </action>



Mime
View raw message