]> git.ipfire.org Git - thirdparty/squid.git/blob - src/adaptation/icap/icap_log.cc
Merge from trunk rev.13866
[thirdparty/squid.git] / src / adaptation / icap / icap_log.cc
1 /*
2 * Copyright (C) 1996-2015 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 #include "squid.h"
10 #include "AccessLogEntry.h"
11 #include "acl/FilledChecklist.h"
12 #include "globals.h"
13 #include "HttpReply.h"
14 #include "icap_log.h"
15 #include "log/CustomLog.h"
16 #include "log/File.h"
17 #include "log/Formats.h"
18 #include "SquidConfig.h"
19
20 int IcapLogfileStatus = LOG_DISABLE;
21
22 void
23 icapLogOpen()
24 {
25 CustomLog *log;
26
27 for (log = Config.Log.icaplogs; log; log = log->next) {
28 if (log->type == Log::Format::CLF_NONE)
29 continue;
30
31 log->logfile = logfileOpen(log->filename, log->bufferSize, log->fatal);
32
33 IcapLogfileStatus = LOG_ENABLE;
34 }
35 }
36
37 void
38 icapLogClose()
39 {
40 CustomLog *log;
41
42 for (log = Config.Log.icaplogs; log; log = log->next) {
43 if (log->logfile) {
44 logfileClose(log->logfile);
45 log->logfile = NULL;
46 }
47 }
48 }
49
50 void
51 icapLogRotate()
52 {
53 for (CustomLog* log = Config.Log.icaplogs; log; log = log->next) {
54 if (log->logfile) {
55 logfileRotate(log->logfile, Config.Log.rotateNumber);
56 }
57 }
58 }
59
60 void icapLogLog(AccessLogEntry::Pointer &al)
61 {
62 if (IcapLogfileStatus == LOG_ENABLE) {
63 ACLFilledChecklist checklist(NULL, al->adapted_request, NULL);
64 if (al->reply) {
65 checklist.reply = al->reply;
66 HTTPMSGLOCK(checklist.reply);
67 }
68 accessLogLogTo(Config.Log.icaplogs, al, &checklist);
69 }
70 }
71