Hi,
After searching in vain for a patch to have squid log referer, useragent
and cookie info in the httpd emulated log, I tried to hack one in the
source myself. And it is looking good! I'ts a real quick and dirty
(emphasis on dirty) hack but so far it's been working great for me.
There are no fancy config options just make sure you enable the
emulate_httpd_log on
line in squid.conf. You then will get a squid access-log like this
apache-style format:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
\"%v\" \"%{Cookie}i\""
plus the squid specific entry at the end of each line.
The patch is intend for use only in httpd_accel mode, to log the extra
(often used) info you get from apache but is missing from squid. The
patch is made against a recent snapshot, but works with the latest
2.3.STABLE4 too. I don't have much c programming experience so I might
have introduced some mem-leaks or something :) But then again squid is
quite a space-hog, so you probably wouldn't notice it anyway :).
If you're gona use this patch, it's entirely at you own risk, but like I
said it works great for us. Since I saw a lot of people on this list
were searching for something like this, but all the links and pointers
to hints mentioned were dead, I thought to be nice and share this litte
hack. Let me know if it works for you.
alex.
combined_log-patch:
----------------------- cut here -----------------------
*** squid-2.3-200010032300/src/access_log.c Tue Mar 14 07:48:22 2000
--- squid-2.3-combined_log/src/access_log.c Thu Oct 12 23:11:45 2000
***************
*** 217,223 ****
client = fqdncache_gethostbyaddr(al->cache.caddr, 0);
if (client == NULL)
client = inet_ntoa(al->cache.caddr);
! memBufPrintf(mb, "%s %s - [%s] \"%s %s HTTP/%.1f\" %d %d %s:%s",
client,
al->cache.ident,
mkhttpdlogtime(&squid_curtime),
--- 217,223 ----
client = fqdncache_gethostbyaddr(al->cache.caddr, 0);
if (client == NULL)
client = inet_ntoa(al->cache.caddr);
! memBufPrintf(mb, "%s %s - [%s] \"%s %s HTTP/%.1f\" %d %d \"%s\"
\"%s\" \"%s\" %s:%s",
client,
al->cache.ident,
mkhttpdlogtime(&squid_curtime),
***************
*** 226,231 ****
--- 226,234 ----
al->http.version,
al->http.code,
al->cache.size,
+ al->http.referer,
+ al->http.agent,
+ al->http.cookie,
log_tags[al->cache.code],
hier_strings[al->hier.code]);
}
diff -crN squid-2.3-200010032300/src/client_side.c
squid-2.3-combined_log/src/client_side.c
*** squid-2.3-200010032300/src/client_side.c Thu Sep 7 06:06:59 2000
--- squid-2.3-combined_log/src/client_side.c Thu Oct 12 23:14:01 2000
***************
*** 643,648 ****
--- 643,652 ----
ConnStateData *conn = http->conn;
StoreEntry *e;
request_t *request = http->request;
+ const HttpHeader *req_hdr = &request->header;
+ const char *agent;
+ const char *referer;
+ const char *cookie;
MemObject *mem = NULL;
debug(33, 3) ("httpRequestFree: %s\n", storeUrl(http->entry));
if (!clientCheckTransferDone(http)) {
***************
*** 658,663 ****
--- 662,670 ----
if (http->entry)
mem = http->entry->mem_obj;
if (http->out.size || http->log_type) {
+ agent = httpHeaderGetStr(req_hdr, HDR_USER_AGENT);
+ referer = httpHeaderGetStr(req_hdr, HDR_REFERER);
+ cookie = httpHeaderGetStr(req_hdr, HDR_COOKIE);
http->al.icp.opcode = ICP_INVALID;
http->al.url = http->log_uri;
debug(33, 9) ("httpRequestFree: al.url='%s'\n", http->al.url);
***************
*** 669,674 ****
--- 676,684 ----
http->al.cache.size = http->out.size;
http->al.cache.code = http->log_type;
http->al.cache.msec = tvSubMsec(http->start, current_time);
+ http->al.http.agent = agent;
+ http->al.http.referer = referer;
+ http->al.http.cookie = cookie;
if (request) {
Packer p;
MemBuf mb;
diff -crN squid-2.3-200010032300/src/structs.h
squid-2.3-combined_log/src/structs.h
*** squid-2.3-200010032300/src/structs.h Thu Mar 30 00:56:57 2000
--- squid-2.3-combined_log/src/structs.h Thu Oct 12 00:03:40 2000
***************
*** 823,828 ****
--- 823,831 ----
int code;
const char *content_type;
float version;
+ const char *agent;
+ const char *referer;
+ const char *cookie;
} http;
struct {
icp_opcode opcode;
----------------------- cut here -----------------------
-- To unsubscribe, see http://www.squid-cache.org/mailing-lists.htmlReceived on Thu Oct 12 2000 - 16:28:03 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:55:45 MST