DEBUG调试文件
在debug.h中设置g_debug_switch即可控制调试级别。
/* debug.c */ #include "debug.h" const char *get_log_levname(unsigned int loglevid) { if (DBG_TYPE_TRACE == loglevid) { return DBG_TYPE_TRACE_NAME; } else if (DBG_TYPE_INFO == loglevid) { return DBG_TYPE_INFO_NAME; } else if (DBG_TYPE_ERR == loglevid) { return DBG_TYPE_ERR_NAME; } else { return DBG_TYPE_UNKNOWN_NAME; } }
/*debug.h*/ #ifndef __DEBUG_H__ #define __DEBUG_H__ #ifdef __cplusplus extern "C" { #endif #include <syslog.h> #include <stdarg.h> typedef int bool_t; /* 布尔量数据类型 */ #ifndef TRUE #define TRUE ((bool_t)1) #endif #ifndef FALSE #define FALSE ((bool_t)0) #endif #define S_OK (0) #define S_ERR (-1) #define S_FAIL (-2) #define S_TIMEOUT (-3) #ifndef MIN #define MIN(x, y) ((x) < (y) ? (x) : (y)) #endif #ifndef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) #endif /* 定义各个级别日志的简称 */ #define DBG_TYPE_TRACE_NAME "TRACE"; /* TRACE级别简称 */ #define DBG_TYPE_INFO_NAME "INFO"; /* 提示级别的简称*/ #define DBG_TYPE_ERR_NAME "ERR"; /* 一般级别的简称 */ #define DBG_TYPE_UNKNOWN_NAME "UNKNOWN"; /*未知的日志级别简称*/ //extern int g_debug_switch; /* 打印级别宏,代码中遍历使用,请保持成顺序排列 */ #define DBG_TYPE_TRACE 1 /* TRACE级别 */ #define DBG_TYPE_INFO 2 /* 提示级别的信息 */ #define DBG_TYPE_ERR 3 /* 错误级别的信息 */ #define DBG_TYPE_OFF 0 #define DEBUG_SCREEN #ifdef DEBUG_SCREEN #define DBG_PRINT(tp, fmt, args...) \ do { \ if ( tp >= g_debug_switch ) \ { fprintf(stderr,"[%s] %s(%d): " fmt, \ get_log_levname(tp), __FUNCTION__, __LINE__, ##args); \ } \ } \ while (0) #else #define DBG_PRINT(tp, fmt, args...) \ do { \ FILE *logfp = fopen("/var/log/systemlog.txt", "a+"); \ if ( tp >= g_debug_switch ) \ { fprintf(logfp,"[%s] %s(%d): " fmt, \ get_log_levname(tp), __FUNCTION__, __LINE__, ##args); \ } \ fclose(logfp); \ } \ while (0) #endif #ifdef __cplusplus } #endif #endif /* __DEBUG_H__ */