FormatSquidIcap.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
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.
7 */
8
9/* DEBUG: section 46 Access Log - Squid ICAP Logging */
10
11#include "squid.h"
12
13#if ICAP_CLIENT
14
15#include "AccessLogEntry.h"
16#include "format/Quoting.h"
17#include "HttpRequest.h"
18#include "log/File.h"
19#include "log/Formats.h"
20#include "SquidConfig.h"
21
22void
24{
25 const char *user = nullptr;
26 char tmp[MAX_IPSTRLEN], clientbuf[MAX_IPSTRLEN];
27
28 const auto client = al->getLogClientFqdn(clientbuf, sizeof(clientbuf));
29
30#if USE_AUTH
31 if (al->request != nullptr && al->request->auth_user_request != nullptr)
33#endif
34
35 if (!user)
37
38#if USE_OPENSSL
39 if (!user)
41#endif
42
43 if (!user)
45
46 if (user && !*user)
47 safe_free(user);
48
49 logfilePrintf(logfile, "%9ld.%03d %6ld %s %s/%03d %" PRId64 " %s %s %s -/%s -\n",
50 (long int) current_time.tv_sec,
51 (int) current_time.tv_usec / 1000,
52 tvToMsec(al->icap.trTime),
53 client,
54 al->icap.outcome,
55 al->icap.resStatus,
56 al->icap.bytesRead,
58 al->icap.reqUri.termedBuf(),
59 user ? user : "-",
61 safe_free(user);
62}
63#endif
64
String reqUri
ICAP Request-URI.
struct timeval trTime
Transaction response time. The timer starts when the ICAP transaction is created and stops when the r...
Adaptation::Icap::XactOutcome outcome
final transaction status
Ip::Address hostAddr
ICAP server IP address.
Http::StatusCode resStatus
ICAP response status code.
int64_t bytesRead
number of bytes read from ICAP server so far
Adaptation::Icap::ICAP::Method reqMethod
ICAP request method.
class AccessLogEntry::CacheDetails cache
const char * getClientIdent() const
Fetch the client IDENT string, or nil if none is available.
class AccessLogEntry::IcapLogEntry icap
HttpRequest * request
const char * getExtUser() const
Fetch the external ACL provided 'user=' string, or nil if none is available.
const char * getLogClientFqdn(char *buf, size_t bufSize) const
char const * username() const
Definition: UserRequest.cc:32
Auth::UserRequest::Pointer auth_user_request
Definition: HttpRequest.h:127
char * toStr(char *buf, const unsigned int blen, int force=AF_UNSPEC) const
Definition: Address.cc:792
Definition: File.h:39
char const * termedBuf() const
Definition: SquidString.h:92
static FILE * logfile
#define MAX_IPSTRLEN
Length of buffer that needs to be allocated to old a null-terminated IP-string.
Definition: forward.h:25
void logfilePrintf(Logfile *lf, const char *fmt,...)
Definition: File.cc:114
const char * methodStr(Method)
Definition: Elements.cc:15
char * QuoteUrlEncodeUsername(const char *name)
Definition: Quoting.cc:31
void SquidIcap(const AccessLogEntryPointer &al, Logfile *logfile)
Display log details in Squid ICAP format.
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:17
long int tvToMsec(struct timeval &t)
Definition: gadgets.h:93
#define PRId64
Definition: types.h:104
#define safe_free(x)
Definition: xalloc.h:73

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors