日志宏
#define INF 0
#define DBG 1
#define ERR 2
#define LOG_LEVEL INF
#define LOG(level, format, ...) do {\
if (level < LOG_LEVEL) break;\
time_t t = time(NULL);\
struct tm *ltm = localtime(&t);\
char tmp[32] = {0};\
strftime(tmp, 31, "%H:%M:%S", ltm);\
printf("[%s][%s:%d] " format "\n", tmp, __FILE__, __LINE__, ##__VA_ARGS__);\
} while(0)
#define INF_LOG(format, ...) LOG(INF, format, ##__VA_ARGS__);
#define DBG_LOG(format, ...) LOG(DBG, format, ##__VA_ARGS__);
#define ERR_LOG(format, ...) LOG(ERR, format, ##__VA_ARGS__);
这段代码定义了一些宏和宏的组合,用于实现日志输出功能。
-
INF
,DBG
,ERR
: 分别定义了三个日志级别,分别为信息、调试和错误。 -
LOG_LEVEL INF
: 定义了一个日志级别,可以通过修改LOG_LEVEL
的值来控制输出哪种级别及以上的日志。 -
LOG(level, format, ...)
: 这是一个宏,用于输出日志。根据传入的level
值和LOG_LEVEL
比较来确定是否输出日志,然后使用printf
函数输出带有时间、文件名和行号等信息的格式化字符串。 -
INF_LOG(format, ...)
,DBG_LOG(format, ...)
,ERR_LOG(format, ...)
: 这三个宏实际上是对LOG
宏的封装,分别用于输出信息、调试和错误级别的日志。调用这些宏会将对应的日志级别传递给LOG
宏进行处理。
总的来说,这些宏的作用是在不同级别下输出带有时间、文件名和行号信息的日志,方便程序员进行调试和错误定位。根据设置的LOG_LEVEL
值,可以灵活控制输出的日志级别,使得日志输出更加可控和灵活。