#ifndef LIBAOS_LOG_H #define LIBAOS_LOG_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif //---------------------------------------------- //使用举例 //RvcLog_init("./log/Proxy_a",1); //初始化 //MFLog(LM_INFO,(LB,"test%d %s[%X]",i,"info test",(unsigned int)i)); //写info日志 //MFLog(LM_DEBUG,(LB,"test%d",i)); //写debug日志 //MFLog(LM_SYSTEM,(LB,"test%d",i)); //写system日志 //MFLog(LM_WARNING,(LB,"test%d",i)); //写warn日志 //MFLog(LM_ERROR,(LB,"test%d",i)); //写error日志 //RvcLog_destroy(); //销毁 //--------------------------------------------- enum LogPriority { // = Note, this first argument *must* start at 1! LM_OFF = 0, /// Messages that contain information normally of use only when /// debugging a program (decimal 1). LM_DEBUG = 01, /// Messages indicating function-calling sequence (decimal 2). LM_TRACE = 02, /// Informational messages (decimal 4). LM_INFO = 04, /// Conditions that are not error conditions, but that may require /// special handling (decimal 8). LM_NOTICE = 010, /// Warning messages (decimal 16). LM_WARNING = 020, /// Error messages (decimal 32). LM_ERROR = 040, /// Critical conditions, such as hard device errors (decimal 128). LM_CRITICAL = 0100, /// The maximum logging priority. LM_MAX = LM_CRITICAL, /// Do not use!! This enum value ensures that the underlying /// integral type for this enum is at least 32 bits. LM_ENSURE_32_BITS = 0x7FFFFFFF }; #ifndef _WIN32 #define _snprintf snprintf #endif //NOT _WIN32 #define MFLOG_BUFSIZE 2047 #define MF_LOG_STR_BUFSIZE (16*1024L) #define LB szLogBuf, MFLOG_BUFSIZE char* AllocLogBuf(void); //void FreeLogBuf( char *pLogBuf ); //公用方法 void MakeLogPrefix(int nLevel, char* szLevel, char* szTime); int RvcLog_init(const char* log_dir, const char* log_name, int level, int show_file_line); int RvcLog_destroy(); int RvcLog_log(const char* szSrcFileName, int iLine, int console, int iLevel, char* szLevel, char* szTime, char* szLog); #define aos_debug_log(Z) \ do \ { \ char *szLogBuf = AllocLogBuf(); \ char szLevel[10]; \ char szTime[32]; \ szLogBuf[MFLOG_BUFSIZE] = '\0'; \ MakeLogPrefix( LM_DEBUG, szLevel, szTime ); \ _snprintf Z; \ RvcLog_log( __FILE__,__LINE__, 1, LM_DEBUG, szLevel, szTime, szLogBuf); \ }while(0) #define aos_info_log(Z) \ do \ { \ char *szLogBuf = AllocLogBuf(); \ char szLevel[10]; \ char szTime[32]; \ szLogBuf[MFLOG_BUFSIZE] = 0; \ MakeLogPrefix( LM_INFO, szLevel, szTime ); \ _snprintf Z; \ RvcLog_log( __FILE__,__LINE__, 1, LM_INFO, szLevel, szTime, szLogBuf); \ }while(0) #define aos_warn_log(Z) \ do \ { \ char *szLogBuf = AllocLogBuf(); \ char szLevel[10]; \ char szTime[32]; \ szLogBuf[MFLOG_BUFSIZE] = 0; \ MakeLogPrefix( LM_WARNING, szLevel, szTime ); \ _snprintf Z; \ RvcLog_log( __FILE__,__LINE__, 1, LM_WARNING, szLevel, szTime, szLogBuf); \ }while(0) #define aos_error_log(Z) \ do \ { \ char *szLogBuf = AllocLogBuf(); \ char szLevel[10]; \ char szTime[32]; \ szLogBuf[MFLOG_BUFSIZE] = 0; \ MakeLogPrefix( LM_ERROR, szLevel, szTime ); \ _snprintf Z; \ RvcLog_log( __FILE__,__LINE__, 1, LM_ERROR, szLevel, szTime, szLogBuf); \ }while(0) #define aos_fatal_log(Z) \ do \ { \ char *szLogBuf = AllocLogBuf(); \ char szLevel[10]; \ char szTime[32]; \ szLogBuf[MFLOG_BUFSIZE] = 0; \ MakeLogPrefix( LM_CRITICAL, szLevel, szTime ); \ _snprintf(LB, Z); \ RvcLog_log( __FILE__,__LINE__, 1, LM_CRITICAL, szLevel, szTime, szLogBuf); \ }while(0) #ifdef __cplusplus } #endif #endif