You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/06/23 22:22:25 UTC
svn commit: r1495886 - in /tomcat/trunk:
java/org/apache/catalina/valves/AccessLogValve.java
java/org/apache/coyote/Response.java webapps/docs/config/valve.xml
Author: markt
Date: Sun Jun 23 20:22:25 2013
New Revision: 1495886
URL: http://svn.apache.org/r1495886
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55102
Add support for time to first byte to the AccessLog
Modified:
tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java
tomcat/trunk/java/org/apache/coyote/Response.java
tomcat/trunk/webapps/docs/config/valve.xml
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=1495886&r1=1495885&r2=1495886&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Sun Jun 23 20:22:25 2013
@@ -1754,6 +1754,22 @@ public class AccessLogValve extends Valv
}
/**
+ * write time until first byte is written (commit time) in millis - %F
+ */
+ protected static class FirstByteTimeElement implements AccessLogElement {
+ @Override
+ public void addElement(CharArrayWriter buf, Date date, Request request, Response response, long time) {
+ long commitTime = response.getCoyoteResponse().getCommitTime();
+ if (commitTime == -1) {
+ buf.append('-');
+ } else {
+ long delta = commitTime - request.getCoyoteRequest().getStartTime();
+ buf.append(Long.toString(delta));
+ }
+ }
+ }
+
+ /**
* write Query string (prepended with a '?' if it exists) - %q
*/
protected static class QueryElement implements AccessLogElement {
@@ -2065,6 +2081,8 @@ public class AccessLogValve extends Valv
return new ByteSentElement(false);
case 'D':
return new ElapsedTimeElement(true);
+ case 'F':
+ return new FirstByteTimeElement();
case 'h':
return new HostElement();
case 'H':
Modified: tomcat/trunk/java/org/apache/coyote/Response.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Response.java?rev=1495886&r1=1495885&r2=1495886&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Response.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Response.java Sun Jun 23 20:22:25 2013
@@ -107,6 +107,7 @@ public final class Response {
// General informations
private long contentWritten = 0;
+ private long commitTime = -1;
/**
* Holds request error exception.
@@ -219,9 +220,20 @@ public final class Response {
public void setCommitted(boolean v) {
+ if (v && !this.commited) {
+ this.commitTime = System.currentTimeMillis();
+ }
this.commited = v;
}
+ /**
+ * Return the time the response was committed (based on System.currentTimeMillis).
+ *
+ * @return the time the response was committed
+ */
+ public long getCommitTime() {
+ return commitTime;
+ }
// -----------------Error State --------------------
@@ -354,7 +366,7 @@ public final class Response {
*/
public void sendHeaders() {
action(ActionCode.COMMIT, this);
- commited = true;
+ setCommitted(true);
}
@@ -522,6 +534,7 @@ public final class Response {
status = 200;
message = null;
commited = false;
+ commitTime = -1;
errorException = null;
headers.clear();
listener = null;
Modified: tomcat/trunk/webapps/docs/config/valve.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/valve.xml?rev=1495886&r1=1495885&r2=1495886&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/valve.xml (original)
+++ tomcat/trunk/webapps/docs/config/valve.xml Sun Jun 23 20:22:25 2013
@@ -280,6 +280,7 @@
<li><b>%v</b> - Local server name</li>
<li><b>%D</b> - Time taken to process the request, in millis</li>
<li><b>%T</b> - Time taken to process the request, in seconds</li>
+ <li><b>%F</b> - Time taken to commit the response, in millis</li>
<li><b>%I</b> - Current request thread name (can compare later with stacktraces)</li>
</ul>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org