⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 store_log.c

📁 -
💻 C
字号:
/* * $Id: store_log.c,v 1.6 1998/07/22 20:54:02 wessels Exp $ * * DEBUG: section 20    Storage Manager Logging Functions * AUTHOR: Duane Wessels * * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/ * ---------------------------------------------------------- * *  Squid is the result of efforts by numerous individuals from the *  Internet community.  Development is led by Duane Wessels of the *  National Laboratory for Applied Network Research and funded by the *  National Science Foundation.  Squid is Copyrighted (C) 1998 by *  Duane Wessels and the University of California San Diego.  Please *  see the COPYRIGHT file for full details.  Squid incorporates *  software developed and/or copyrighted by other sources.  Please 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. * */#include "squid.h"static char *storeLogTags[] ={    "CREATE",    "SWAPIN",    "SWAPOUT",    "RELEASE"};static int storelog_fd = -1;voidstoreLog(int tag, const StoreEntry * e){    MemBuf mb;    MemObject *mem = e->mem_obj;    HttpReply *reply;    if (storelog_fd < 0)	return;    if (mem == NULL)	return;    if (mem->log_url == NULL) {	debug(20, 1) ("storeLog: NULL log_url for %s\n", mem->url);	storeMemObjectDump(mem);	mem->log_url = xstrdup(mem->url);    }    memBufDefInit(&mb);    reply = mem->reply;    memBufPrintf(&mb, "%9d.%03d %-7s %08X %4d %9d %9d %9d %s %d/%d %s %s\n",	(int) current_time.tv_sec,	(int) current_time.tv_usec / 1000,	storeLogTags[tag],	e->swap_file_number,	reply->sline.status,	(int) reply->date,	(int) reply->last_modified,	(int) reply->expires,	strBuf(reply->content_type) ? strBuf(reply->content_type) : "unknown",	reply->content_length,	(int) (mem->inmem_hi - mem->reply->hdr_sz),	RequestMethodStr[mem->method],	mem->log_url);    file_write_mbuf(storelog_fd, -1, mb, NULL, NULL);}voidstoreLogRotate(void){    char *fname = NULL;    int i;    LOCAL_ARRAY(char, from, MAXPATHLEN);    LOCAL_ARRAY(char, to, MAXPATHLEN);#ifdef S_ISREG    struct stat sb;#endif    if (storelog_fd > -1) {	file_close(storelog_fd);	storelog_fd = -1;    }    if ((fname = Config.Log.store) == NULL)	return;    if (strcmp(fname, "none") == 0)	return;#ifdef S_ISREG    if (stat(fname, &sb) == 0)	if (S_ISREG(sb.st_mode) == 0)	    return;#endif    debug(20, 1) ("storeLogRotate: Rotating.\n");    /* Rotate numbers 0 through N up one */    for (i = Config.Log.rotateNumber; i > 1;) {	i--;	snprintf(from, MAXPATHLEN, "%s.%d", fname, i - 1);	snprintf(to, MAXPATHLEN, "%s.%d", fname, i);	rename(from, to);    }    /* Rotate the current log to .0 */    if (Config.Log.rotateNumber > 0) {	snprintf(to, MAXPATHLEN, "%s.%d", fname, 0);	rename(fname, to);    }    storelog_fd = file_open(fname, O_WRONLY | O_CREAT, NULL, NULL, NULL);    if (storelog_fd < 0) {	debug(50, 0) ("storeLogRotate: %s: %s\n", fname, xstrerror());	debug(20, 1) ("Store logging disabled\n");    }}voidstoreLogClose(void){    if (storelog_fd >= 0)	file_close(storelog_fd);}voidstoreLogOpen(void){    if (strcmp(Config.Log.store, "none") == 0)	storelog_fd = -1;    else	storelog_fd = file_open(Config.Log.store,	    O_WRONLY | O_CREAT,	    NULL,	    NULL,	    NULL);    if (storelog_fd < 0)	debug(20, 1) ("Store logging disabled\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -