Make access logging more robust for 400 responses.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 4 May 2011 18:19:10 +0000 (18:19 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 4 May 2011 18:19:10 +0000 (18:19 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1099553 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/valves/AccessLogValve.java
webapps/docs/changelog.xml

index b13e7ce..4a9c9a4 100644 (file)
@@ -926,16 +926,20 @@ public class AccessLogValve extends ValveBase implements AccessLog {
         @Override
         public void addElement(StringBuilder buf, Date date, Request request,
                 Response response, long time) {
+            String value = null;
             if (requestAttributesEnabled) {
                 Object host = request.getAttribute(REMOTE_HOST_ATTRIBUTE);
-                if (host == null) {
-                    buf.append(request.getRemoteHost());
-                } else {
-                    buf.append(host);
+                if (host != null) {
+                    value = host.toString();
                 }
-            } else {
-                buf.append(request.getRemoteHost());
             }
+            if (value == null || value.length() == 0) {
+                value = request.getRemoteHost();
+            }
+            if (value == null || value.length() == 0) {
+                value = "-";
+            }
+            buf.append(value);
         }
     }
     
@@ -1027,17 +1031,23 @@ public class AccessLogValve extends ValveBase implements AccessLog {
         public void addElement(StringBuilder buf, Date date, Request request,
                 Response response, long time) {
             if (request != null) {
-                buf.append(request.getMethod());
-                buf.append(' ');
-                buf.append(request.getRequestURI());
-                if (request.getQueryString() != null) {
-                    buf.append('?');
-                    buf.append(request.getQueryString());
+                String method = request.getMethod();
+                if (method == null) {
+                    // No method means no request line
+                    buf.append('-');
+                } else {
+                    buf.append(request.getMethod());
+                    buf.append(' ');
+                    buf.append(request.getRequestURI());
+                    if (request.getQueryString() != null) {
+                        buf.append('?');
+                        buf.append(request.getQueryString());
+                    }
+                    buf.append(' ');
+                    buf.append(request.getProtocol());
                 }
-                buf.append(' ');
-                buf.append(request.getProtocol());
             } else {
-                buf.append("- - ");
+                buf.append('-');
             }
         }
     }
index 5b18aae..560bf19 100644 (file)
         Partial sync of MIME type mapping with mime.types from the Apache web
         server. About 600 MIME types added, some changed. (rjung)
       </add>
+      <fix>
+        Make access logging more robust when logging requests that generate 400
+        responses since the request object is unlikely to be fully/correctly
+        populated in that case. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">