From 058ca9040974f007c35e945a543735f1689ad17f Mon Sep 17 00:00:00 2001 From: andersb Date: Sat, 5 Aug 2006 21:11:50 +0000 Subject: [PATCH] Added user, loginname, statuscode (200, 304 etc.), byte and referer to make a logline compliant. User and loginname is hardcoded. Referer and User-agen is unclean. Timecode is not working. This version leaks memory bigtime, and is not ready for alpha yet. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@684 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishncsa/varnishncsa.c | 48 ++++++++++++++++----- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/varnish-cache/bin/varnishncsa/varnishncsa.c b/varnish-cache/bin/varnishncsa/varnishncsa.c index 8be78170..70195682 100644 --- a/varnish-cache/bin/varnishncsa/varnishncsa.c +++ b/varnish-cache/bin/varnishncsa/varnishncsa.c @@ -40,9 +40,9 @@ struct logline { // unsigned char *df_u; // Datafield for %u struct tm *logline_time; // Datafield for %t unsigned char *df_r; // Datafield for %r - // unsigned char *df_s; // Datafield for %s - // unsigned char *df_b; // Datafield for %b - // unsigned char *df_R; // Datafield for %{Referer}i + unsigned char *df_s; // Datafield for %s + unsigned char *df_b; // Datafield for %b + unsigned char *df_R; // Datafield for %{Referer}i unsigned char *df_U; // Datafield for %{User-agent}i }; @@ -173,6 +173,14 @@ extended_log_format(unsigned char *p, char *w_opt) if (p[1] >= 11 && !strncasecmp((void *)&p[4], "user-agent:",11)){ ll[u].df_U = strdup(p + 4); } + if (p[1] >= 8 && !strncasecmp((void *)&p[4], "referer:",8)){ + ll[u].df_R = strdup(p + 4); + } + else if (ll[u].df_R == NULL){ + ll[u].df_R = strdup(p + 4); + ll[u].df_R[0] = '-'; + ll[u].df_R[1] = '\0'; + } break; @@ -184,10 +192,10 @@ extended_log_format(unsigned char *p, char *w_opt) tmpPtrb = strdup(p + 4); for ( tmpPtra = strtok(tmpPtrb," "); tmpPtra != NULL; tmpPtra = strtok(NULL, " ")){ - if (i = 1){ + //if (i = 1){ tmpPtrc = tmpPtra; - } - printf("ReqServTime number %d: %s\n", i, tmpPtra); + //} + //printf("ReqServTime number %d: %s\n", i, tmpPtra); i++; } @@ -210,6 +218,22 @@ extended_log_format(unsigned char *p, char *w_opt) break; + case SLT_TxStatus: + + ll[u].df_s = strdup(p + 4); + + break; + + case SLT_Length: + + ll[u].df_b = strdup(p + 4); + if (!atoi(ll[u].df_b)){ + ll[u].df_b[0] = '-'; + ll[u].df_b[1] = '\0'; + } + + break; + case SLT_SessionClose: if (p[1] >= 7 && !strncasecmp((void *)&p[4], "timeout",7)){ @@ -217,11 +241,13 @@ extended_log_format(unsigned char *p, char *w_opt) } else{ - printf("%s %s", ll[u].df_h, temp_time); + printf("%s - - %s", ll[u].df_h, temp_time); sbuf_finish(ob[u]); printf("\"%s\"", sbuf_data(ob[u])); - printf(" \"%s\"\n", ll[u].df_U); + printf(" %s %s \"%s\" \"%s\"\n", ll[u].df_s, ll[u].df_b, ll[u].df_R, ll[u].df_U); sbuf_clear(ob[u]); + //free(ll[u].df_R); + //free(ll[u].df_U); } @@ -243,11 +269,13 @@ extended_log_format(unsigned char *p, char *w_opt) } - printf("%s %s", ll[u].df_h, temp_time); + printf("%s - - %s", ll[u].df_h, temp_time); sbuf_finish(ob[u]); printf("\"%s\"", sbuf_data(ob[u])); - printf(" \"%s\"\n", ll[u].df_U); + printf(" %s %s \"%s\" \"%s\"\n", ll[u].df_s, ll[u].df_b, ll[u].df_R, ll[u].df_U); sbuf_clear(ob[u]); + //free(ll[u].df_R); + //free(ll[u].df_U); break; -- 2.39.5