X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Flog.c;h=63136987f2e88e61ad9f84424a9d049d609a37ef;hb=ec1409176c61594fd6c3c0311f4cea40772d47a6;hp=312a6dd0b9b92863fe3aa4be8b4a3187dd22aeba;hpb=e448c7a56df8e289c9dbd5b8d87753addd541091;p=swftools.git diff --git a/lib/log.c b/lib/log.c index 312a6dd..6313698 100644 --- a/lib/log.c +++ b/lib/log.c @@ -27,32 +27,38 @@ #include "log.h" -#define LOGLEVEL_FATAL 0 -#define LOGLEVEL_ERROR 1 -#define LOGLEVEL_WARNING 2 -#define LOGLEVEL_NOTICE 3 -#define LOGLEVEL_VERBOSE 4 -#define LOGLEVEL_DEBUG 5 - -int screenloglevel; -int fileloglevel; -int socketloglevel; -FILE *logFile = 0; +int screenloglevel = 1; +static int fileloglevel = -1; +static int socketloglevel = -1; +static int maxloglevel = 1; +static FILE *logFile = 0; #ifdef __NT__ -SOCKET logSocket; +static SOCKET logSocket; #else -int logSocket = 0; +static int logSocket = 0; #endif -char bLogToSock = 0; +static char bLogToSock = 0; -void initlogSocket(char* servAddr, char* logPort); +static void initlogSocket(char* servAddr, char* logPort); void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, int serverlevel, int screenlevel) { screenloglevel = screenlevel; fileloglevel = fileloglevel; socketloglevel = screenlevel; + + maxloglevel=screenloglevel; + if(fileloglevel>maxloglevel && pLogName) + maxloglevel=fileloglevel; + if(serverlevel>maxloglevel && servAddr) + maxloglevel=serverlevel; + + if(!servAddr) + serverlevel = -1; + if(!pLogName) + fileloglevel = -1; + logFile = NULL; bLogToSock = 0; @@ -63,7 +69,7 @@ void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, in initlogSocket(servAddr, logPort); } -void initlogSocket(char* servAddr, char* logPort) +static void initlogSocket(char* servAddr, char* logPort) { #ifndef __NT__ bLogToSock = 0; @@ -139,7 +145,7 @@ void exitLog() static char * logimportance[]= {"Fatal","Error","Warning","Notice","Verbose","Debug"}; static int loglevels=6; static char * logimportance2[]= {" ","FATAL ","ERROR ","WARNING","NOTICE ","VERBOSE","DEBUG "}; -void log(char* logString) +static inline void log(char* logString) { char timebuffer[32]; char* logBuffer; @@ -238,13 +244,21 @@ void log(char* logString) free (logBuffer); } -void logf(const char* pszFormat, ...) +void logf(const char* format, ...) { char buf[1024]; va_list arglist; - va_start(arglist, pszFormat); - buf[0] = 0; - vsprintf(&buf[strlen(buf)], pszFormat, arglist); + va_start(arglist, format); + + /* speed up hack */ + if(format[0]=='<') { + char*z = "fewnvd"; + char*x = strchr(z,format[1]); + if(x && (x-z)>maxloglevel) + return; + } + + vsprintf(buf, format, arglist); va_end(arglist); strcat(buf, "\n"); log(buf);