Improve logging of error conditions
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 11 Jul 2011 16:08:23 +0000 (16:08 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 11 Jul 2011 16:08:23 +0000 (16:08 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1145224 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/connector/CoyoteAdapter.java
test/org/apache/catalina/core/TestAsyncContextImpl.java
webapps/docs/changelog.xml

index 789ef8d..7f6bd4f 100644 (file)
@@ -493,8 +493,24 @@ public class CoyoteAdapter implements Adapter {
         }
         
         try {
-            connector.getService().getContainer().logAccess(
-                    request, response, time, true);
+            // Log at the lowest level available. logAccess() will be
+            // automatically called on parent containers.
+            boolean logged = false;
+            if (request.mappingData != null) {
+                if (request.mappingData.context != null) {
+                    logged = true;
+                    ((Context) request.mappingData.context).logAccess(
+                            request, response, time, true);
+                } else if (request.mappingData.host != null) {
+                    logged = true;
+                    ((Context) request.mappingData.context).logAccess(
+                            request, response, time, true);
+                }
+            }
+            if (!logged) {
+                connector.getService().getContainer().logAccess(
+                        request, response, time, true);
+            }
         } catch (Throwable t) {
             ExceptionUtils.handleThrowable(t);
             log.warn(sm.getString("coyoteAdapter.accesslogFail"), t);
index efb5fa7..5d9ff69 100644 (file)
@@ -452,10 +452,10 @@ public class TestAsyncContextImpl extends TomcatBaseTest {
 
         // Check the access log
         if (completeOnTimeout && dispatchUrl != null) {
-            if (!isAccessLogEnabled()) {
+            //if (!isAccessLogEnabled()) {
                 validateAccessLog(alv, 1, 500, 0, TimeoutServlet.ASYNC_TIMEOUT +
                         TIMEOUT_MARGIN + REQUEST_TIME);
-            }
+            //}
         } else {
             validateAccessLog(alv, 1, 200, TimeoutServlet.ASYNC_TIMEOUT,
                     TimeoutServlet.ASYNC_TIMEOUT + TIMEOUT_MARGIN +
index 8cedd45..1f2f86f 100644 (file)
         Allow choosing a locale for timestamp formatting in AccessLogValve.
         (rjung)
       </update>
+      <fix>
+        When generating access logs for errors, log at the Context/Host level if
+        a Context or Host can be identified for the failed request. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">