Author: markt
Date: Thu Sep 25 16:31:20 2014
New Revision: 1627569

URL: http://svn.apache.org/r1627569
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56401
Improve the previous fix .
Avoid logging version information in the constructor since it then gets logged 
at undesirable times such as when using StoreConfig

Modified:
    tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
    tomcat/trunk/java/org/apache/catalina/startup/VersionLoggerListener.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java?rev=1627569&r1=1627568&r2=1627569&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java Thu 
Sep 25 16:31:20 2014
@@ -20,6 +20,8 @@ package org.apache.catalina.core;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
@@ -46,6 +48,13 @@ public class AprLifecycleListener
     private static final Log log = 
LogFactory.getLog(AprLifecycleListener.class);
     private static boolean instanceCreated = false;
     /**
+     * Info messages during init() are cached until Lifecycle.BEFORE_INIT_EVENT
+     * so that, in normal (non-error) cases, init() releated log messages 
appear
+     * at the expected point in the lifecycle.
+     */
+    private static final List<String> initInfoLogMessages = new ArrayList<>(3);
+
+    /**
      * The string manager for this package.
      */
     protected static final StringManager sm =
@@ -116,6 +125,10 @@ public class AprLifecycleListener
         if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) {
             synchronized (lock) {
                 init();
+                for (String msg : initInfoLogMessages) {
+                    log.info(msg);
+                }
+                initInfoLogMessages.clear();
                 if (aprAvailable) {
                     try {
                         initializeSSL();
@@ -195,7 +208,7 @@ public class AprLifecycleListener
         } catch (Throwable t) {
             t = ExceptionUtils.unwrapInvocationTargetException(t);
             ExceptionUtils.handleThrowable(t);
-            log.info(sm.getString("aprListener.aprInit",
+            initInfoLogMessages.add(sm.getString("aprListener.aprInit",
                     System.getProperty("java.library.path")));
             return;
         }
@@ -216,21 +229,21 @@ public class AprLifecycleListener
             return;
         }
         if (apver < rcver) {
-            log.info(sm.getString("aprListener.tcnVersion", major + "."
-                    + minor + "." + patch,
+            initInfoLogMessages.add(sm.getString("aprListener.tcnVersion",
+                    major + "." + minor + "." + patch,
                     TCN_REQUIRED_MAJOR + "." +
                     TCN_RECOMMENDED_MINOR + "." +
                     TCN_RECOMMENDED_PV));
         }
 
-        log.info(sm.getString("aprListener.tcnValid", major + "."
-                    + minor + "." + patch,
-                    Library.APR_MAJOR_VERSION + "."
-                    + Library.APR_MINOR_VERSION + "."
-                    + Library.APR_PATCH_VERSION));
+        initInfoLogMessages.add(sm.getString("aprListener.tcnValid",
+                major + "." + minor + "." + patch,
+                Library.APR_MAJOR_VERSION + "." +
+                Library.APR_MINOR_VERSION + "." +
+                Library.APR_PATCH_VERSION));
 
         // Log APR flags
-        log.info(sm.getString("aprListener.flags",
+        initInfoLogMessages.add(sm.getString("aprListener.flags",
                 Boolean.valueOf(Library.APR_HAVE_IPV6),
                 Boolean.valueOf(Library.APR_HAS_SENDFILE),
                 Boolean.valueOf(Library.APR_HAS_SO_ACCEPTFILTER),

Modified: 
tomcat/trunk/java/org/apache/catalina/startup/VersionLoggerListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/VersionLoggerListener.java?rev=1627569&r1=1627568&r2=1627569&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/VersionLoggerListener.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/VersionLoggerListener.java 
Thu Sep 25 16:31:20 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.catalina.startup;
 
+import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.util.ServerInfo;
@@ -36,18 +37,11 @@ public class VersionLoggerListener imple
     protected static final StringManager sm = 
StringManager.getManager(Constants.Package);
 
 
-    public VersionLoggerListener() {
-        // The log message is generated here to ensure that it appears before
-        // any log messages from the APRLifecycleListener. This won't be logged
-        // on shutdown because only the Server element in server.xml is
-        // processed on shutdown.
-        log();
-    }
-
-
     @Override
     public void lifecycleEvent(LifecycleEvent event) {
-        // NO-OP
+        if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) {
+            log();
+        }
     }
 
 

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1627569&r1=1627568&r2=1627569&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Sep 25 16:31:20 2014
@@ -45,7 +45,16 @@
   issues to not "pop up" wrt. others).
 -->
 <section name="Tomcat 8.0.15 (markt)">
-  <subsection name="We applications">
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Improve the previous fix for <bug>56401</bug>. Avoid logging version
+        information in the constructor since it then gets logged at undesirable
+        times such as when using <code>StoreConfig</code>. (markt)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Web applications">
     <changelog>
       <fix>
         Correct a couple of broken links in the Javadoc. (markt)



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to