logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nickwilli...@apache.org
Subject svn commit: r1561958 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/web/ log4j-core/src/test/java/org/apache/logging/log4j/core/web/ src/changes/
Date Tue, 28 Jan 2014 07:30:20 GMT
Author: nickwilliams
Date: Tue Jan 28 07:30:20 2014
New Revision: 1561958

URL: http://svn.apache.org/r1561958
Log:
Fixed LOG4J2-452 (Part 1-Code) Added a ServletContext attribute that, when set to 'true',
disables Log4j's auto-initialization in Servlet 3.0+ web applications. Will update documentation
in Part 2 commit.

Modified:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializer.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jWebSupport.java
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializerTest.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializer.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializer.java?rev=1561958&r1=1561957&r2=1561958&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializer.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializer.java
Tue Jan 28 07:30:20 2014
@@ -37,7 +37,10 @@ public class Log4jServletContainerInitia
 
     @Override
     public void onStartup(final Set<Class<?>> classes, final ServletContext servletContext)
throws ServletException {
-        if (servletContext.getMajorVersion() > 2 && servletContext.getEffectiveMajorVersion()
> 2) {
+        if (servletContext.getMajorVersion() > 2 && servletContext.getEffectiveMajorVersion()
> 2 &&
+                !"true".equalsIgnoreCase(servletContext.getInitParameter(
+                        Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED
+                ))) {
             servletContext.log("Log4jServletContainerInitializer starting up Log4j in Servlet
3.0+ environment.");
 
             final FilterRegistration.Dynamic filter =

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jWebSupport.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jWebSupport.java?rev=1561958&r1=1561957&r2=1561958&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jWebSupport.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/web/Log4jWebSupport.java
Tue Jan 28 07:30:20 2014
@@ -15,22 +15,29 @@ import org.apache.logging.log4j.spi.Logg
  */
 public interface Log4jWebSupport {
     /**
-     * The {@link javax.servlet.ServletContext} context-param name for the name of the
+     * The {@link javax.servlet.ServletContext} parameter name for the name of the
      * {@link org.apache.logging.log4j.core.LoggerContext}.
      */
     String LOG4J_CONTEXT_NAME = "log4jContextName";
 
     /**
-     * The {@link javax.servlet.ServletContext} context-param name for the location of the
configuration.
+     * The {@link javax.servlet.ServletContext} parameter name for the location of the configuration.
      */
     String LOG4J_CONFIG_LOCATION = "log4jConfiguration";
 
     /**
-     * The {@link javax.servlet.ServletContext} context-param name for the JNDI flag.
+     * The {@link javax.servlet.ServletContext} parameter name for the JNDI flag.
      */
     String IS_LOG4J_CONTEXT_SELECTOR_NAMED = "isLog4jContextSelectorNamed";
 
     /**
+     * The {@link javax.servlet.ServletContext} parameter name for the flag that disables
Log4j's auto-initialization
+     * in Servlet 3.0+ web applications. Set a context parameter with this name to "true"
to disable
+     * auto-initialization.
+     */
+    String IS_LOG4J_AUTO_INITIALIZATION_DISABLED = "isLog4jAutoInitializationDisabled";
+
+    /**
      * The attribute key for the {@link javax.servlet.ServletContext} attribute that the
singleton support instance
      * is stored in.
      */

Modified: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializerTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializerTest.java?rev=1561958&r1=1561957&r2=1561958&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializerTest.java
(original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/web/Log4jServletContainerInitializerTest.java
Tue Jan 28 07:30:20 2014
@@ -71,6 +71,30 @@ public class Log4jServletContainerInitia
     }
 
     @Test
+    public void testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() throws
Exception {
+        expect(this.servletContext.getMajorVersion()).andReturn(3);
+        expect(this.servletContext.getEffectiveMajorVersion()).andReturn(3);
+        expect(this.servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))
+                .andReturn("true");
+
+        replay(this.servletContext, this.initializer);
+
+        this.containerInitializer.onStartup(null, this.servletContext);
+    }
+
+    @Test
+    public void testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() throws
Exception {
+        expect(this.servletContext.getMajorVersion()).andReturn(3);
+        expect(this.servletContext.getEffectiveMajorVersion()).andReturn(3);
+        expect(this.servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))
+                .andReturn("TRUE");
+
+        replay(this.servletContext, this.initializer);
+
+        this.containerInitializer.onStartup(null, this.servletContext);
+    }
+
+    @Test
     public void testOnStartupWithServletVersion3_xEffectiveVersion3_x() throws Exception
{
         final FilterRegistration.Dynamic registration = createStrictMock(FilterRegistration.Dynamic.class);
 
@@ -79,6 +103,8 @@ public class Log4jServletContainerInitia
 
         expect(this.servletContext.getMajorVersion()).andReturn(3);
         expect(this.servletContext.getEffectiveMajorVersion()).andReturn(3);
+        expect(this.servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))
+                .andReturn(null);
         this.servletContext.log(anyObject(String.class));
         expectLastCall();
         expect(this.servletContext.addFilter(eq("log4jServletFilter"), capture(filterCapture))).andReturn(registration);
@@ -115,6 +141,8 @@ public class Log4jServletContainerInitia
 
         expect(this.servletContext.getMajorVersion()).andReturn(3);
         expect(this.servletContext.getEffectiveMajorVersion()).andReturn(3);
+        expect(this.servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))
+                .andReturn("false");
         this.servletContext.log(anyObject(String.class));
         expectLastCall();
         expect(this.servletContext.addFilter(eq("log4jServletFilter"), capture(filterCapture))).andReturn(null);
@@ -141,6 +169,8 @@ public class Log4jServletContainerInitia
 
         expect(this.servletContext.getMajorVersion()).andReturn(3);
         expect(this.servletContext.getEffectiveMajorVersion()).andReturn(3);
+        expect(this.servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))
+                .andReturn("balderdash");
         this.servletContext.log(anyObject(String.class));
         expectLastCall();
         expect(this.servletContext.addFilter(eq("log4jServletFilter"), capture(filterCapture))).andReturn(registration);

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1561958&r1=1561957&r2=1561958&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Jan 28 07:30:20 2014
@@ -21,6 +21,10 @@
   </properties>
   <body>
     <release version="2.0-RC1" date="2014-MM-DD" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-452" dev="nickwilliams" type="fix" due-to="">
+        Added a ServletContext attribute that, when set to "true", disables Log4j's auto-initialization
in
+        Servlet 3.0+ web applications.
+      </action>
       <action issue="LOG4J2-512" dev="nickwilliams" type="fix" due-to="Chandra Sekhar
Kakarla, Matt Sicker">
         Exposed Log4j web support interface and methods and the LoggerContext through ServletContext
attributes
         so that threads not affected by filters (such as asynchronous threads) can utilize
the LoggerContext. Also



Mime
View raw message