[master] 9e6b75d Add %D and %T support to varnishncsa
Tollef Fog Heen
tfheen at varnish-cache.org
Fri Apr 26 14:36:41 CEST 2013
commit 9e6b75dc46ae97aee8522cdb983bd6f3f4e8ce40
Author: Tollef Fog Heen <tfheen at varnish-software.com>
Date: Fri Apr 26 14:36:24 2013 +0200
Add %D and %T support to varnishncsa
diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index 0b039b6..1a22554 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -97,9 +97,11 @@ static struct logline {
char *df_h; /* %h (host name / IP adress)*/
char *df_m; /* %m, Request method*/
char *df_s; /* %s, Status */
- struct tm df_t; /* %t, Date and time */
+ struct tm df_t; /* %t, Date and time, received */
char *df_u; /* %u, Remote user */
char *df_ttfb; /* Time to first byte */
+ double df_D; /* %D, time taken to serve the request,
+ in microseconds, also used for %T */
const char *df_hitmiss; /* Whether this is a hit or miss */
const char *df_handling; /* How the request was handled
(hit/miss/pass/pipe) */
@@ -400,7 +402,6 @@ collect_client(struct logline *lp, enum VSL_tag_e tag, unsigned spec,
const char *ptr, unsigned len)
{
const char *end, *next, *split;
- long l;
time_t t;
assert(spec & VSL_S_CLIENT);
@@ -557,18 +558,20 @@ collect_client(struct logline *lp, enum VSL_tag_e tag, unsigned spec,
case SLT_ReqEnd:
{
char ttfb[64];
+ double t_start, t_end;
if (!lp->active)
break;
if (lp->df_ttfb != NULL ||
- sscanf(ptr, "%*u %*u.%*u %ld.%*u %*u.%*u %s", &l, ttfb)
- != 2) {
+ sscanf(ptr, "%*u %lf %lf %*u.%*u %s", &t_start, &t_end, ttfb)
+ != 3) {
clean_logline(lp);
break;
}
if (lp->df_ttfb != NULL)
free(lp->df_ttfb);
lp->df_ttfb = strdup(ttfb);
- t = l;
+ lp->df_D = t_end - t_start;
+ t = t_start;
localtime_r(&t, &lp->df_t);
/* got it all */
lp->complete = 1;
@@ -669,6 +672,10 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
VSB_cat(os, lp->df_b ? lp->df_b : "-");
break;
+ case 'D':
+ /* %D */
+ VSB_printf(os, "%f", lp->df_D);
+
case 'H':
VSB_cat(os, lp->df_H ? lp->df_H : "HTTP/1.0");
break;
@@ -724,6 +731,11 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
VSB_cat(os, tbuf);
break;
+ case 'T':
+ /* %T */
+ VSB_printf(os, "%d", (int)lp->df_D);
+ break;
+
case 'U':
VSB_cat(os, lp->df_U ? lp->df_U : "-");
break;
More information about the varnish-commit
mailing list