You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pe...@apache.org on 2007/09/14 00:05:56 UTC

svn commit: r575482 - in /tomcat/container/tc5.5.x: catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java webapps/docs/changelog.xml

Author: pero
Date: Thu Sep 13 15:05:56 2007
New Revision: 575482

URL: http://svn.apache.org/viewvc?rev=575482&view=rev
Log:
Support logging of all response header values at ExtendedAccessLogValve (ex. add x-O(Set-Cookie) to your pattern).

Modified:
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java?rev=575482&r1=575481&r2=575482&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ExtendedAccessLogValve.java Thu Sep 13 15:05:56 2007
@@ -72,6 +72,7 @@
  * <li><code>time-taken</code>:  Time (in seconds) taken to serve the request</li>
  * <li><code>x-A(XXX)</code>: Pull XXX attribute from the servlet context </li>
  * <li><code>x-C(XXX)</code>: Pull the first cookie of the name XXX </li>
+ * <li><code>x-O(XXX)</code>: Pull the all response header values XXX </li>
  * <li><code>x-R(XXX)</code>: Pull XXX attribute from the servlet request </li>
  * <li><code>x-S(XXX)</code>: Pull XXX attribute from the session </li>
  * <li><code>x-P(...)</code>:  Call request.getParameter(...)
@@ -130,6 +131,7 @@
  *
  *
  * @author Tim Funk
+ * @author Peter Rossbach
  * @version $Revision$ $Date$
  */
 
@@ -160,7 +162,7 @@
      * The descriptive information about this implementation.
      */
     protected static final String info =
-        "org.apache.catalina.valves.ExtendedAccessLogValve/1.0";
+        "org.apache.catalina.valves.ExtendedAccessLogValve/1.1";
 
 
     /**
@@ -697,7 +699,29 @@
 
     }
 
+    /**
+     * write a specific response header - x-O{xxx}
+     */
+    protected String responseHeader(Request request,String header) {
+        Response response = request.getResponse() ;
+        if (null != response) {
+            String[] values = response.getHeaderValues(header);
+            if(values.length > 0) {
+                StringBuffer buf = new StringBuffer();
+                for (int i = 0; i < values.length; i++) {
+                    String string = values[i];
+                    buf.append(string) ;
+                    if(i+1<values.length)
+                        buf.append(",");
 
+                }
+                return buf.toString() ;
+            }
+        }
+        return "-" ;
+    }
+    
+    
     /**
      * Get app specific data.
      * @param fieldInfo The field to decode
@@ -711,6 +735,8 @@
                 return wrap(urlEncode(request.getParameter(fieldInfo.value)));
             case FieldInfo.X_REQUEST:
                 return wrap(request.getAttribute(fieldInfo.value));
+            case FieldInfo.X_RESPONSE:
+                return wrap(responseHeader(request,fieldInfo.value));
             case FieldInfo.X_SESSION:
                 HttpSession session = null;
                 if (request!=null){
@@ -1258,6 +1284,7 @@
       * x-A(...) - Value in servletContext
       * x-S(...) - Value in session
       * x-R(...) - Value in servletRequest
+      * x-O(...) - Header value in servletResponse
       * @param fields The pattern to decode
       * @param i The string index where we are decoding.
       * @param fieldInfo Where to store the results
@@ -1281,6 +1308,9 @@
             case 'C':
                 fieldInfo.xType = FieldInfo.X_COOKIE;
                 break;
+            case 'O':
+                fieldInfo.xType = FieldInfo.X_RESPONSE;
+                break;
             case 'R':
                 fieldInfo.xType = FieldInfo.X_REQUEST;
                 break;
@@ -1397,6 +1427,7 @@
     static final short X_APP     = 4; /* For x app specific */
     static final short X_SERVLET_REQUEST = 5; /* For x app specific */
     static final short X_PARAMETER = 6; /* For x app specific */
+    static final short X_RESPONSE = 7; /* For x app specific */
 
     static final short X_LOC_AUTHTYPE                       = 1;
     static final short X_LOC_REMOTEUSER                     = 2;

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=575482&r1=575481&r2=575482&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Thu Sep 13 15:05:56 2007
@@ -45,6 +45,9 @@
       <add>
         Made session createTime accessible for all SessionManager via JMX (pero)
       </add>
+      <add>
+        Support logging of all response header values at ExtendedAccessLogValve (ex. add x-O(Set-Cookie) to your pattern). (pero)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Cluster">



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