X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Flog%2FFormatHttpdCommon.cc;h=4f07aa4cab24e8bb2892da7b43cede253ceb6e0e;hb=77b1029d207083d583d81d2f2fb7a840e0f23cab;hp=f9270d6980a052cd0e4c24e8f456ad5149f2a915;hpb=2fa037d1fbf44572c2459690c02e1fe7bf1ed2c0;p=thirdparty%2Fsquid.git diff --git a/src/log/FormatHttpdCommon.cc b/src/log/FormatHttpdCommon.cc index f9270d6980..4f07aa4cab 100644 --- a/src/log/FormatHttpdCommon.cc +++ b/src/log/FormatHttpdCommon.cc @@ -1,40 +1,19 @@ /* - * DEBUG: section 46 Access Log - Apache common format - * AUTHOR: Duane Wessels - * - * SQUID Web Proxy Cache http://www.squid-cache.org/ - * ---------------------------------------------------------- - * - * Squid is the result of efforts by numerous individuals from - * the Internet community; see the CONTRIBUTORS file for full - * details. Many organizations have provided support for Squid's - * development; see the SPONSORS file for full details. Squid is - * Copyrighted (C) 2001 by the Regents of the University of - * California; see the COPYRIGHT file for full details. Squid - * incorporates software developed and/or copyrighted by other - * sources; see the CREDITS file for full details. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * Copyright (C) 1996-2020 The Squid Software Foundation and contributors * + * Squid software is distributed under GPLv2+ license and includes + * contributions from numerous individuals and organizations. + * Please see the COPYING and CONTRIBUTORS files for details. */ +/* DEBUG: section 46 Access Log - Apache common format */ + #include "squid.h" #include "AccessLogEntry.h" #include "format/Quoting.h" #include "format/Token.h" #include "globals.h" +#include "HttpRequest.h" #include "log/File.h" #include "log/Formats.h" #include "SquidConfig.h" @@ -43,25 +22,30 @@ void Log::Format::HttpdCommon(const AccessLogEntry::Pointer &al, Logfile * logfile) { - const char *user_auth = ::Format::QuoteUrlEncodeUsername(al->cache.authuser); - const char *user_ident = ::Format::QuoteUrlEncodeUsername(al->cache.rfc931); + const char *user_auth = NULL; +#if USE_AUTH + if (al->request && al->request->auth_user_request != NULL) + user_auth = ::Format::QuoteUrlEncodeUsername(al->request->auth_user_request->username()); +#endif + const char *user_ident = ::Format::QuoteUrlEncodeUsername(al->getClientIdent()); char clientip[MAX_IPSTRLEN]; al->getLogClientIp(clientip, MAX_IPSTRLEN); - logfilePrintf(logfile, "%s %s %s [%s] \"%s %s %s/%d.%d\" %d %" PRId64 " %s%s:%s%s", + const SBuf method(al->getLogMethod()); + + logfilePrintf(logfile, "%s %s %s [%s] \"" SQUIDSBUFPH " " SQUIDSBUFPH " %s/%d.%d\" %d %" PRId64 " %s:%s%s", clientip, user_ident ? user_ident : dash_str, user_auth ? user_auth : dash_str, Time::FormatHttpd(squid_curtime), - al->_private.method_str, - al->url, + SQUIDSBUFPRINT(method), + SQUIDSBUFPRINT(al->url), AnyP::ProtocolType_str[al->http.version.protocol], al->http.version.major, al->http.version.minor, al->http.code, - al->cache.replySize, - ::Format::log_tags[al->cache.code], - al->http.statusSfx(), + al->http.clientReplySz.messageTotal(), + al->cache.code.c_str(), hier_code_str[al->hier.code], (Config.onoff.log_mime_hdrs?"":"\n")); @@ -70,9 +54,13 @@ Log::Format::HttpdCommon(const AccessLogEntry::Pointer &al, Logfile * logfile) if (Config.onoff.log_mime_hdrs) { char *ereq = ::Format::QuoteMimeBlob(al->headers.request); - char *erep = ::Format::QuoteMimeBlob(al->headers.reply); + MemBuf mb; + mb.init(); + al->packReplyHeaders(mb); + auto erep = ::Format::QuoteMimeBlob(mb.content()); logfilePrintf(logfile, " [%s] [%s]\n", ereq, erep); safe_free(ereq); safe_free(erep); } } +