Author: pero
Date: Thu Sep 13 12:31:16 2007
New Revision: 575411
URL: http://svn.apache.org/viewvc?rev=575411&view=rev
Log:
Support logging of all response header values at AccessLogValve (ex. add
%{Set-Cookie}o to your pattern)
and ExtendedAccessLogValve (ex. add x-O(Set-Cookie) to your pattern)
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
tomcat/tc6.0.x/trunk/webapps/docs/config/valve.xml
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=575411&r1=575410&r2=575411&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java
Thu Sep 13 12:31:16 2007
@@ -94,6 +94,7 @@
* It is modeled after the apache syntax:
* <ul>
* <li><code>%{xxx}i</code> for incoming headers
+ * <li><code>%{xxx}o</code> for outgoing response headers
* <li><code>%{xxx}c</code> for a specific cookie
* <li><code>%{xxx}r</code> xxx is an attribute in the ServletRequest
* <li><code>%{xxx}s</code> xxx is an attribute in the HttpSession
@@ -111,7 +112,9 @@
* @author Jason Brittain
* @author Remy Maucherat
* @author Takayuki Kaneko
- * @version $Revision$ $Date: 2007-01-04 12:17:11 +0900
+ * @author Peter Rossbach
+ *
+ * @version $Revision$ $Date$
*/
public class AccessLogValve
@@ -140,7 +143,7 @@
* The descriptive information about this implementation.
*/
protected static final String info =
- "org.apache.catalina.valves.AccessLogValve/2.0";
+ "org.apache.catalina.valves.AccessLogValve/2.1";
/**
@@ -1248,6 +1251,34 @@
}
/**
+ * write a specific response header - %{xxx}o
+ */
+ protected class ResponseHeaderElement implements AccessLogElement {
+ private String header;
+
+ public ResponseHeaderElement(String header) {
+ this.header = header;
+ }
+
+ public void addElement(StringBuffer buf, Date date, Request request,
+ Response response, long time) {
+ if (null != response) {
+ String[] values = response.getHeaderValues(header);
+ if(values.length > 0) {
+ for (int i = 0; i < values.length; i++) {
+ String string = values[i];
+ buf.append(string) ;
+ if(i+1<values.length)
+ buf.append(",");
+ }
+ return ;
+ }
+ }
+ buf.append("-");
+ }
+ }
+
+ /**
* write an attribute in the ServletRequest - %{xxx}r
*/
protected class RequestAttributeElement implements AccessLogElement {
@@ -1370,10 +1401,12 @@
return new HeaderElement(header);
case 'c':
return new CookieElement(header);
+ case 'o':
+ return new ResponseHeaderElement(header);
case 'r':
return new RequestAttributeElement(header);
case 's':
- return new SessionAttributeElement(header);
+ return new SessionAttributeElement(header);
default:
return new StringElement("???");
}
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java?rev=575411&r1=575410&r2=575411&view=diff
==============================================================================
---
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
(original)
+++
tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
Thu Sep 13 12:31:16 2007
@@ -64,6 +64,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(...)
@@ -122,6 +123,8 @@
*
*
* @author Tim Funk
+ * @author Peter Rossbach
+ *
* @version $Revision$ $Date$
*/
@@ -138,7 +141,7 @@
* The descriptive information about this implementation.
*/
protected static final String extendedAccessLogInfo =
- "org.apache.catalina.valves.ExtendedAccessLogValve/1.0";
+ "org.apache.catalina.valves.ExtendedAccessLogValve/2.1";
// ------------------------------------------------------------- Properties
@@ -209,7 +212,7 @@
super.open();
if (currentLogFile.length()==0) {
writer.println("#Fields: " + pattern);
- writer.println("#Version: 1.0");
+ writer.println("#Version: 2.0");
writer.println("#Software: " + ServerInfo.getServerInfo());
}
}
@@ -331,6 +334,36 @@
}
}
+ /**
+ * write a specific response header - x-O(xxx)
+ */
+ protected class ResponseAllHeaderElement implements AccessLogElement {
+ private String header;
+
+ public ResponseAllHeaderElement(String header) {
+ this.header = header;
+ }
+
+ public void addElement(StringBuffer buf, Date date, Request request,
+ Response response, long time) {
+ if (null != response) {
+ String[] values = response.getHeaderValues(header);
+ if(values.length > 0) {
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < values.length; i++) {
+ String string = values[i];
+ buffer.append(string) ;
+ if(i+1<values.length)
+ buffer.append(",");
+ }
+ buf.append(wrap(buffer.toString()));
+ return ;
+ }
+ }
+ buf.append("-");
+ }
+ }
+
protected class RequestAttributeElement implements AccessLogElement {
private String attribute;
@@ -718,6 +751,8 @@
return getServletRequestElement(parameter);
} else if ("P".equals(token)) {
return new RequestParameterElement(parameter);
+ } else if ("O".equals(token)) {
+ return new ResponseAllHeaderElement(parameter);
}
log.error("x param for servlet request, couldn't decode value: "
+ token);
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=575411&r1=575410&r2=575411&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Thu Sep 13 12:31:16 2007
@@ -65,6 +65,12 @@
<add>
Made session createTime accessible for all SessionManager via JMX
(pero)
</add>
+ <update>
+ <bug>43129</bug>: Support logging of all response header values at
AccessLogValve (ex. add %{Set-Cookie}o to your pattern). (pero)
+ </update>
+ <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="Coyote">
Modified: tomcat/tc6.0.x/trunk/webapps/docs/config/valve.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/config/valve.xml?rev=575411&r1=575410&r2=575411&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/config/valve.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/config/valve.xml Thu Sep 13 12:31:16 2007
@@ -187,6 +187,7 @@
It is modeled after the apache syntax:
<ul>
<li><b><code>%{xxx}i</code></b> for incoming headers</li>
+ <li><b><code>%{xxx}o</code></b> for outgoing response headers</li>
<li><b><code>%{xxx}c</code></b> for a specific cookie</li>
<li><b><code>%{xxx}r</code></b> xxx is an attribute in the
ServletRequest</li>
<li><b><code>%{xxx}s</code></b> xxx is an attribute in the HttpSession</li>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]