Cool - One (very minor) nit ... A safer size might be 500.
A typical User agent string by itself is 100+ characters which will easily take the log line over 128 characters.

StringBuilder result = new StringBuilder(128);

-Tim


On 6/2/2010 11:12 AM, ma...@apache.org wrote:
Author: markt
Date: Wed Jun  2 15:12:36 2010
New Revision: 950587

URL: http://svn.apache.org/viewvc?rev=950587&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49099
Hooking the CoyoteAdaptor into the existing AccessLog wasn't as invasive as I 
feared so go that route to log requests rejected by the Adaptor before the 
request/response reaches the AcessLogValve

Added:
     tomcat/trunk/java/org/apache/catalina/AccessLog.java   (with props)
Modified:
     tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
     tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java
     tomcat/trunk/webapps/docs/config/valve.xml

Added: tomcat/trunk/java/org/apache/catalina/AccessLog.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/AccessLog.java?rev=950587&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/AccessLog.java (added)
+++ tomcat/trunk/java/org/apache/catalina/AccessLog.java Wed Jun  2 15:12:36 
2010
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.catalina;
+
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.connector.Response;
+
+
+/**
+ * Intended for use by a {...@link Valve} to indicate that the {...@link Valve}
+ * provides access logging. It is used by the Tomcat internals (the
+ * {...@link org.apache.catalina.connector.CoyoteAdapter} at the time of 
writing)
+ * to identify a Valve that logs access requests so requests that are rejected
+ * earlier in the processing chain can still be added to the access log.
+ * Implementations of this interface should be robust against the provided
+ * {...@link Request} and {...@link Response} objects being null, having null
+ * attributes or any other 'oddness' that may result from attempting to log
+ * a request that was almost certainly rejected because it was mal-formed.
+ */
+public interface AccessLog {
+
+    /**
+     * Add the request/response to the access log using the specified 
processing
+     * time.
+     *
+     * @param request   Request (associated with the response) to log
+     * @param response  Response (associated with the request) to log
+     * @param time      Time taken to process the request/response in
+     *                  milliseconds (use 0 if not known)
+     */
+    public void log(Request request, Response response, long time);
+}

Propchange: tomcat/trunk/java/org/apache/catalina/AccessLog.java
------------------------------------------------------------------------------
     svn:eol-style = native


Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=950587&r1=950586&r2=950587&view=diff

+    public void log(Request request, Response response, long time) {
+        if (logElements == null || condition != null
+&&  null != request.getRequest().getAttribute(condition)) {
+            return;
+        }
+
+        Date date = getDate();
+        StringBuilder result = new StringBuilder(128);
+
+        for (int i = 0; i<  logElements.length; i++) {
+            logElements[i].addElement(result, date, request, response, time);
+        }
+
+        log(result.toString());
+    }

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

Reply via email to