]>
Commit | Line | Data |
---|---|---|
fd2c5549 | 1 | /* |
bbc27441 | 2 | * Copyright (C) 1996-2014 The Squid Software Foundation and contributors |
fd2c5549 | 3 | * |
bbc27441 AJ |
4 | * Squid software is distributed under GPLv2+ license and includes |
5 | * contributions from numerous individuals and organizations. | |
6 | * Please see the COPYING and CONTRIBUTORS files for details. | |
fd2c5549 | 7 | */ |
8 | ||
bbc27441 AJ |
9 | /* DEBUG: section 46 Access Log - Apache common format */ |
10 | ||
f7f3304a | 11 | #include "squid.h" |
20efa1c2 | 12 | #include "AccessLogEntry.h" |
38e16f92 | 13 | #include "format/Quoting.h" |
31971e6a | 14 | #include "format/Token.h" |
582c2af2 | 15 | #include "globals.h" |
c0e8c76f | 16 | #include "HttpRequest.h" |
82b7abe3 | 17 | #include "log/File.h" |
20efa1c2 | 18 | #include "log/Formats.h" |
4d5904f7 | 19 | #include "SquidConfig.h" |
0268f798 | 20 | #include "SquidTime.h" |
21 | ||
fd2c5549 | 22 | void |
41ebd397 | 23 | Log::Format::HttpdCommon(const AccessLogEntry::Pointer &al, Logfile * logfile) |
fd2c5549 | 24 | { |
c0e8c76f AJ |
25 | const char *user_auth = NULL; |
26 | #if USE_AUTH | |
27 | if (al->request && al->request->auth_user_request != NULL) | |
28 | user_auth = ::Format::QuoteUrlEncodeUsername(al->request->auth_user_request->username()); | |
29 | #endif | |
38e16f92 | 30 | const char *user_ident = ::Format::QuoteUrlEncodeUsername(al->cache.rfc931); |
20efa1c2 | 31 | |
d4204018 AJ |
32 | char clientip[MAX_IPSTRLEN]; |
33 | al->getLogClientIp(clientip, MAX_IPSTRLEN); | |
34 | ||
7f06a3d8 AJ |
35 | static SBuf method; |
36 | if (al->_private.method_str) | |
37 | method.assign(al->_private.method_str); | |
38 | else | |
39 | method = al->http.method.image(); | |
40 | ||
41 | logfilePrintf(logfile, "%s %s %s [%s] \"" SQUIDSBUFPH " %s %s/%d.%d\" %d %" PRId64 " %s%s:%s%s", | |
d4204018 | 42 | clientip, |
20efa1c2 AJ |
43 | user_ident ? user_ident : dash_str, |
44 | user_auth ? user_auth : dash_str, | |
45 | Time::FormatHttpd(squid_curtime), | |
7f06a3d8 | 46 | SQUIDSBUFPRINT(method), |
20efa1c2 | 47 | al->url, |
c9fd01b4 | 48 | AnyP::ProtocolType_str[al->http.version.protocol], |
20efa1c2 AJ |
49 | al->http.version.major, al->http.version.minor, |
50 | al->http.code, | |
cc0ca3b9 | 51 | al->http.clientReplySz.messageTotal(), |
02c8dde5 | 52 | LogTags_str[al->cache.code], |
20efa1c2 AJ |
53 | al->http.statusSfx(), |
54 | hier_code_str[al->hier.code], | |
55 | (Config.onoff.log_mime_hdrs?"":"\n")); | |
56 | ||
57 | safe_free(user_auth); | |
58 | safe_free(user_ident); | |
59 | ||
60 | if (Config.onoff.log_mime_hdrs) { | |
38e16f92 AJ |
61 | char *ereq = ::Format::QuoteMimeBlob(al->headers.request); |
62 | char *erep = ::Format::QuoteMimeBlob(al->headers.reply); | |
20efa1c2 AJ |
63 | logfilePrintf(logfile, " [%s] [%s]\n", ereq, erep); |
64 | safe_free(ereq); | |
65 | safe_free(erep); | |
fd2c5549 | 66 | } |
c9b99797 | 67 | } |