# HG changeset patch # User Olaf Wintermann # Date 1516522672 -3600 # Node ID 0459c94a60eda8b5776840da1156decfe4722ef0 # Parent d367b687bc74d2d4c9adaf8354b207507e7dd072 adds combined log format diff -r d367b687bc74 -r 0459c94a60ed src/server/safs/addlog.c --- a/src/server/safs/addlog.c Sun Jan 21 08:54:28 2018 +0100 +++ b/src/server/safs/addlog.c Sun Jan 21 09:17:52 2018 +0100 @@ -34,12 +34,19 @@ #include "../daemon/request.h" #include "../daemon/vserver.h" #include "../daemon/log.h" +#include "../util/util.h" int common_log(pblock *pb, Session *sn, Request *rq) { NSAPIRequest *request = (NSAPIRequest*)rq; VirtualServer *vs = request->vs; AccessLog *log = vs->log; + char *combined_str = pblock_findval("combined", pb); + WSBool combined = FALSE; + if(combined_str) { + combined = util_getboolean(combined_str, FALSE); + } + if(log == NULL) { return REQ_NOACTION; } @@ -71,15 +78,50 @@ } tmstr = sstrdup_pool(sn->pool, tmstr); - fprintf( - log->log->file, - "%s - %s [%s] \"%s\" %d %s\n", - ip, - user, - tmstr.ptr, - req, - rq->status_num, - len); + if(combined) { + char *referer = pblock_findval("referer", rq->headers); + char *user_agent = pblock_findval("user-agent", rq->headers); + int refq = 1; + int uaq = 1; + if(!referer) { + referer = "-"; + refq = 0; + } + if(!user_agent) { + user_agent = "-"; + uaq = 0; + } + fprintf( + log->log->file, + "%s - %s [%s] \"%s\" %d %s %.*s%s%.*s %.*s%s%.*s\n", + ip, + user, + tmstr.ptr, + req, + rq->status_num, + len, + refq, + "\"", + referer, + refq, + "\"", + uaq, + "\"", + user_agent, + uaq, + "\"" + ); + } else { + fprintf( + log->log->file, + "%s - %s [%s] \"%s\" %d %s\n", + ip, + user, + tmstr.ptr, + req, + rq->status_num, + len); + } fflush(log->log->file);