Cytowanie Mrvka Andreas <[EMAIL PROTECTED]>:

> Hi guys,
> 
> i use awstats and wanted to analyse squid 2.5-Stable5.
> i heard to use a patch for customizable logformat.

Hi 

About year ago I was looking for a working patch and didn't find one, so 
I came up with my own hard hack, which causes squid to generate exact apache's
combined log instead of "common apache plus some squid fields" log when 
you turn apache emulation logging on.

3 small changes below, plus "emulate_httpd_log on" in your squid.conf 
should do the trick.

It's against squid-2.5.STABLE3:

# diff -cr src/structs.h.orig src/structs.h
*** src/structs.h.orig  Wed Jun  4 14:13:31 2003
--- src/structs.h       Wed Jun  4 14:14:44 2003
***************
*** 1025,1030 ****
--- 1025,1032 ----
        int code;
        const char *content_type;
        http_version_t version;
+         const char *agent;
+         const char *referer; 
      } http;
      struct {
        icp_opcode opcode;


# diff -cr src/client_side.c.orig src/client_side.c
*** src/client_side.c.orig      Wed Jun  4 14:09:57 2003
--- src/client_side.c   Wed Jun  4 15:19:13 2003
***************
*** 779,784 ****
--- 779,785 ----
      ConnStateData *conn = http->conn;
      StoreEntry *e;
      request_t *request = http->request;
+     const HttpHeader *req_hdr = &request->header;
      MemObject *mem = NULL;
      debug(33, 3) ("httpRequestFree: %s\n", storeUrl(http->entry));
      if (!clientCheckTransferDone(http)) {
***************
*** 805,810 ****
--- 806,813 ----
        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 = httpHeaderGetStr(req_hdr, HDR_USER_AGENT);
+         http->al.http.referer = httpHeaderGetStr(req_hdr, HDR_REFERER); 
        if (request) {
            Packer p;
            MemBuf mb;

# diff -cr src/access_log.c.orig src/access_log.c
*** src/access_log.c.orig       Wed Jun  4 14:06:01 2003
--- src/access_log.c    Wed Jun  4 15:19:55 2003
***************
*** 271,277 ****
        client = inet_ntoa(al->cache.caddr);
      user1 = accessLogFormatName(al->cache.authuser);
      user2 = accessLogFormatName(al->cache.rfc931);
!     logfilePrintf(logfile, "%s %s %s [%s] \"%s %s HTTP/%d.%d\" %d %ld %s:%s",
        client,
        user2 ? user2 : dash_str,
        user1 ? user1 : dash_str,
--- 271,277 ----
        client = inet_ntoa(al->cache.caddr);
      user1 = accessLogFormatName(al->cache.authuser);
      user2 = accessLogFormatName(al->cache.rfc931);
!     logfilePrintf(logfile, "%s %s %s [%s] \"%s %s HTTP/%d.%d\" %d %ld \"%s\"
\"%s\"",
        client,
        user2 ? user2 : dash_str,
        user1 ? user1 : dash_str,
***************
*** 281,288 ****
        al->http.version.major, al->http.version.minor,
        al->http.code,
        (long int) al->cache.size,
!       log_tags[al->cache.code],
!       hier_strings[al->hier.code]);
      safe_free(user1);
      safe_free(user2);
  }
--- 281,288 ----
        al->http.version.major, al->http.version.minor,
        al->http.code,
        (long int) al->cache.size,
!       al->http.referer ? al->http.referer : dash_str,
!       al->http.agent ? al->http.agent : dash_str );
      safe_free(user1);
      safe_free(user2);
  }

Regards

M.

-- 
[EMAIL PROTECTED]  ( Psyborg )  MJ102-RIPE  GTS Internet Partners SA
Servers Administration Department Manager

Reply via email to