-#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;
void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, int serverlevel, int screenlevel)
{
screenloglevel = screenlevel;
fileloglevel = fileloglevel;
socketloglevel = screenlevel;
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;
+
static char * logimportance[]= {"Fatal","Error","Warning","Notice","Verbose","Debug"};
static int loglevels=6;
static char * logimportance2[]= {" ","FATAL ","ERROR ","WARNING","NOTICE ","VERBOSE","DEBUG "};
static char * logimportance[]= {"Fatal","Error","Warning","Notice","Verbose","Debug"};
static int loglevels=6;
static char * logimportance2[]= {" ","FATAL ","ERROR ","WARNING","NOTICE ","VERBOSE","DEBUG "};
- 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);