]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/log/FormatSquidNative.cc
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 46 Access Log - Squid format */
12 #include "AccessLogEntry.h"
13 #include "format/Quoting.h"
14 #include "format/Token.h"
16 #include "HttpRequest.h"
18 #include "log/Formats.h"
19 #include "SquidConfig.h"
22 Log::Format::SquidNative(const AccessLogEntry::Pointer
&al
, Logfile
* logfile
)
24 char hierHost
[MAX_IPSTRLEN
];
26 const char *user
= nullptr;
29 if (al
->request
&& al
->request
->auth_user_request
!= nullptr)
30 user
= ::Format::QuoteUrlEncodeUsername(al
->request
->auth_user_request
->username());
34 user
= ::Format::QuoteUrlEncodeUsername(al
->getExtUser());
38 user
= ::Format::QuoteUrlEncodeUsername(al
->cache
.ssluser
);
42 user
= ::Format::QuoteUrlEncodeUsername(al
->getClientIdent());
47 char clientip
[MAX_IPSTRLEN
];
48 al
->getLogClientIp(clientip
, MAX_IPSTRLEN
);
50 const SBuf
method(al
->getLogMethod());
52 logfilePrintf(logfile
, "%9ld.%03d %6ld %s %s/%03d %" PRId64
" " SQUIDSBUFPH
" " SQUIDSBUFPH
" %s %s%s/%s %s%s",
53 (long int) current_time
.tv_sec
,
54 (int) current_time
.tv_usec
/ 1000,
55 tvToMsec(al
->cache
.trTime
),
57 al
->cache
.code
.c_str(),
59 al
->http
.clientReplySz
.messageTotal(),
60 SQUIDSBUFPRINT(method
),
61 SQUIDSBUFPRINT(al
->url
),
62 user
? user
: dash_str
,
63 al
->hier
.ping
.timedout
? "TIMEOUT_" : "",
64 hier_code_str
[al
->hier
.code
],
65 al
->hier
.tcpServer
!= nullptr ? al
->hier
.tcpServer
->remote
.toStr(hierHost
, sizeof(hierHost
)) : "-",
66 al
->http
.content_type
,
67 (Config
.onoff
.log_mime_hdrs
?"":"\n"));
71 if (Config
.onoff
.log_mime_hdrs
) {
72 char *ereq
= ::Format::QuoteMimeBlob(al
->headers
.request
);
75 al
->packReplyHeaders(mb
);
76 auto erep
= ::Format::QuoteMimeBlob(mb
.content());
77 logfilePrintf(logfile
, " [%s] [%s]\n", ereq
, erep
);