1 /* 2 * Copyright (C) 1996-2021 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 icapLogOpen()23icapLogOpen() 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 icapLogClose()38icapLogClose() 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 icapLogRotate()51icapLogRotate() 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 icapLogLog(AccessLogEntry::Pointer & al)60void 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 72