📄 logger.cpp
字号:
#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <time.h>#include <iostream>#include <string>#include "Logger.h"char Logger::_logFile[256] = {0}; //it will be initialized when program startbool Logger::_debug=false; void Logger::setLogFile(char* fileName){ strcpy(_logFile, fileName);}void Logger::setDebug(bool flag){ _debug=flag;}int Logger::log(int level, char* msg, ...){ va_list ap; int r; va_start(ap, msg); r=do_log(level, msg, ap); va_end(ap); return r;}int Logger::debug(char* msg, ...){ va_list ap; int r; if(!_debug) return 0; va_start(ap, msg); r=do_log(L_CONS, msg, ap); //only debug, but not write log va_end(ap); return r;}int Logger::do_log(int level, char* msg, va_list ap){ FILE* fp; char* s=": "; time_t timeval; String ymd; int len; char buffer[1024]; bool dirnull=false; if(strcmp(_logFile, "") == 0) dirnull=true; if(level&L_CONS || dirnull || level&L_DBG) { level&=~L_CONS; timeval=time(0); strcpy(buffer, ctime(&timeval)); len=strlen(buffer); //strcat(buffer, s); strcpy(buffer+len-1, s); len = strlen(buffer); vsprintf(buffer+len, msg, ap); fprintf(stderr, buffer); fprintf(stderr, "\n"); } if(!level) //level==L_CONS return 0; if (strcmp(_logFile, "stdout") != 0) { if((fp=fopen(_logFile, "a")) ==(FILE*)NULL) { fprintf(stderr, ":Could't open file %s for log.\n",_logFile); return -1; } } else { fp=stdout; } timeval=time(0); strcpy(buffer, ctime(&timeval)); switch(level) { case L_DBG: s=": DEBUG :"; break; case L_ERR: s=": ERROR :"; break; case L_COMM: s=": COMMON :"; break; default: break; } strcat(buffer, s); len=strlen(buffer); vsprintf(buffer+len, msg, ap); for(s=buffer; *s; s++) { if(*s == '\r' || *s == '\n') *s=' '; //else if(*s < 32 || (*s >= 128)) else if(*s < 32) *s='?'; } strcat(buffer, "\n"); fputs(buffer, fp); if(fp != stdout) fclose(fp); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -