log.cxx

来自「PTypes (C++ Portable Types Library) is a」· CXX 代码 · 共 117 行

CXX
117
字号
/* * *  C++ Portable Types Library (PTypes) *  Version 1.7.5   Released 9-Mar-2003 * *  Copyright (c) 2001, 2002, 2003 Hovik Melikyan * *  http://www.melikyan.com/ptypes/ *  http://ptypes.sourceforge.net/ * */#include <stdio.h>#include <stdarg.h>#ifndef WIN32#  include <syslog.h>#endif#include <ptime.h>#include <pasync.h>#include "config.h"#include "log.h"USING_PTYPESFILE* htlog = stderr;FILE* errlog = stderr;#ifdef WIN32#  define vsnprintf _vsnprintf#endifvoid log_init(){#ifndef WIN32    if (cfg_syslog)        openlog(myname, 0, LOG_USER);#endif}void log_done(){#ifndef WIN32    if (cfg_syslog)        closelog();#endif}void syslog_write(log_severity_t pri, const char* fmt, ...){    char buf[2048];    va_list va;    va_start(va, fmt);    vsnprintf(buf, sizeof(buf), fmt, va);#ifndef WIN32    if (cfg_syslog)    {        // syslog is available only on Unix        static int upri[4] = {LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_INFO};        syslog(upri[pri], "%s", buf);    }#endif    if (errlog != 0)    {        static pconst spri[4] = {"FATAL: ", "Error: ", "", ""};        fprintf(errlog, "%s: %s  %s%s\n", myname, pconst(nowstring("%d-%b-%Y %H:%M:%S")), spri[pri], buf);        fflush(errlog);    }    va_end(va);}void htlog_write(ipaddress ip, string request, int code, large size, string referer){    if (htlog == 0)        return;    if (isempty(referer))        referer = '-';    int t = tzoffset();    bool neg = t < 0;    if (neg)        t = -t;    string ssize;    if (size < 0)        ssize = '-';    else        ssize = itostring(size);    string sdate = nowstring("%d/%b/%Y:%H:%M:%S", false);        if (cfg_log_referer)        referer = " \"" + referer + '\"';    else	clear(referer);    fprintf(htlog, "%s - - [%s %c%02d%02d] \"%s\" %d %s%s\n",        pconst(iptostring(ip)), pconst(sdate), neg ? '-' : '+', t / 60, t % 60,        pconst(request), code, pconst(ssize), pconst(referer));    fflush(htlog);}

⌨️ 快捷键说明

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