diff -Nur squid-2.5.STABLE3.orig/configure.in squid-2.5.STABLE3/configure.in --- squid-2.5.STABLE3.orig/configure.in Mon Sep 8 17:05:29 2003 +++ squid-2.5.STABLE3/configure.in Mon Sep 8 17:40:31 2003 @@ -1100,6 +1100,20 @@ fi ]) +dnl Enable Apache-like combined log format including referer information +AC_ARG_ENABLE(apache_like_combined_log, +[ --enable-apache-like-combined-log + Enable support for logging in the + Apache-like style combined log format. + This is an experimental feature, which comes + from Dan Reif.], +[ if test "$enableval" = "yes" ; then + echo "Enabling support for Apache-like combined log format" + AC_DEFINE(APACHE_LIKE_COMBINED_LOG, 1) + fi +]) + + # Force some compilers to use ANSI features # case "$host" in diff -Nur squid-2.5.STABLE3.orig/src/access_log.c squid-2.5.STABLE3/src/access_log.c --- squid-2.5.STABLE3.orig/src/access_log.c Mon Sep 8 17:05:28 2003 +++ squid-2.5.STABLE3/src/access_log.c Mon Sep 8 17:30:10 2003 @@ -268,12 +268,33 @@ { const char *client = NULL; char *user1 = NULL, *user2 = NULL; + request_t * request = al->request; + const HttpHeader *req_hdr = &request->header; + if (Config.onoff.log_fqdn) client = fqdncache_gethostbyaddr(al->cache.caddr, 0); if (client == NULL) client = inet_ntoa(al->cache.caddr); user1 = accessLogFormatName(al->cache.authuser); user2 = accessLogFormatName(al->cache.rfc931); +#ifdef REIF_LOGS + logfilePrintf(logfile, "%s %s %s [%s] \"%s %s HTTP/%d.%d\" %d %ld \"%s\" \"%s\"", + client, + user2 ? user2 : dash_str, + user1 ? user1 : dash_str, + mkhttpdlogtime(&squid_curtime), + al->private.method_str, + al->url, + al->http.version.major, al->http.version.minor, + al->http.code, + (long int) al->cache.size, + httpHeaderHas( req_hdr, HDR_REFERER ) ? + httpHeaderGetStr( req_hdr, HDR_REFERER ) : + dash_str, // Referer if we have it, else dash_str. + httpHeaderHas( req_hdr, HDR_USER_AGENT ) ? + httpHeaderGetStr( req_hdr, HDR_USER_AGENT ) : + dash_str ); // User-Agent if we have it, else dash_str. +#else logfilePrintf(logfile, "%s %s %s [%s] \"%s %s HTTP/%d.%d\" %d %ld %s:%s", client, user2 ? user2 : dash_str, @@ -286,6 +307,7 @@ (long int) al->cache.size, log_tags[al->cache.code], hier_strings[al->hier.code]); +#endif safe_free(user1); safe_free(user2); } diff -Nur squid-2.5.STABLE3.orig/src/client_side.c squid-2.5.STABLE3/src/client_side.c --- squid-2.5.STABLE3.orig/src/client_side.c Mon Sep 8 17:05:29 2003 +++ squid-2.5.STABLE3/src/client_side.c Mon Sep 8 17:31:31 2003 @@ -815,6 +815,9 @@ http->al.http.version = request->http_ver; http->al.headers.request = xstrdup(mb.buf); http->al.hier = request->hier; +#ifdef REIF_LOGS + http->al.request = request; +#endif if (request->auth_user_request) { if (authenticateUserRequestUsername(request->auth_user_request)) http->al.cache.authuser = xstrdup(authenticateUserRequestUsername(request->auth_user_request)); diff -Nur squid-2.5.STABLE3.orig/src/defines.h squid-2.5.STABLE3/src/defines.h --- squid-2.5.STABLE3.orig/src/defines.h Mon Sep 8 17:05:29 2003 +++ squid-2.5.STABLE3/src/defines.h Mon Sep 8 17:42:01 2003 @@ -309,4 +309,8 @@ #define FILE_MODE(x) ((x)&(O_RDONLY|O_WRONLY|O_RDWR)) #endif +#ifdef APACHE_LIKE_COMBINED_LOG +#define REIF_LOGS +#endif + #endif /* SQUID_DEFINES_H */ diff -Nur squid-2.5.STABLE3.orig/src/structs.h squid-2.5.STABLE3/src/structs.h --- squid-2.5.STABLE3.orig/src/structs.h Mon Sep 8 17:05:28 2003 +++ squid-2.5.STABLE3/src/structs.h Mon Sep 8 17:32:30 2003 @@ -1043,6 +1043,9 @@ struct { const char *method_str; } private; +#ifdef REIF_LOGS + request_t * request; +#endif HierarchyLogEntry hier; };