日志宏定义
来源:互联网 发布:java人才培训中心 编辑:程序博客网 时间:2024/06/08 11:16
在编码过程中,我们通常需要打印日志来跟踪程序运行轨迹。
这里定义了几个日志宏,包括以下功能:
1.日志开关(关闭开关,日志将不在打印)
2.日志级别,定义不同的宏,打印不同级别日志
3.精确打印时间、文件、函数、行,变量值等。
#include <stdio.h>#define LOG_TURN_ON#ifdef LOG_TURN_ON#define log_info(...) do {\LOG_isEnabled()&&\printf("<%s %s> %s %s:%d INFO:",__DATE__, __TIME__,__FUNCTION__,__FILE__,__LINE__)&&\printf(__VA_ARGS__)&&\printf("\n");\}while(0)//__DATE__, __TIME__,__FUNCTION__,__FILE__,__LINE__ 日期宏,时间宏,函数宏,文件宏,行宏//__VA_ARGS__ 动态参数宏#define log_warn(...) do {\LOG_isEnabled()&&\printf("<%s %s> %s %s:%d WARN:",__DATE__, __TIME__,__FUNCTION__,__FILE__,__LINE__)&&\printf(__VA_ARGS__)&&\printf("\n");\}while(0)#define log_error(...) do {\LOG_isEnabled()&&\printf("<%s %s> %s %s:%d ERROR:",__DATE__, __TIME__,__FUNCTION__,__FILE__,__LINE__)&&\printf(__VA_ARGS__)&&\printf("\n");\}while(0)#define log_debug(...) do {\LOG_isEnabled()&&\printf("<%s %s> %s %s:%d DEBUG:",__DATE__, __TIME__,__FUNCTION__,__FILE__,__LINE__)&&\printf(__VA_ARGS__)&&\printf("\n");\}while(0)#define log_test(format, ...) do {\printf(format, __VA_ARGS__);\printf("\n");\}while(0)#else#define log_info(...)#define log_warn(...)#define log_error(...)#define log_debug(...)#define log_test(format, ...) #endif int logSwitch = 0;//初始化为关闭状态bool LOG_isEnabled(){ return logSwitch;}int main(){ logSwitch = 1; //打开日志开关 int a = 10; int b = 20; char c = 'c'; char d = 'd'; log_info("a =%d b=%d c=%c d=%c", a,b ,c,d); log_warn("I'm log_warn "); log_error("I'm log_error "); log_debug("I'm log_debug "); return 1;}
0 0
- 宏定义日志打印
- 日志宏定义
- 宏定义 日志输出
- 宏定义日志输出
- C++ 日志宏定义
- DEBUG日志宏定义-简单日志分级
- c 宏定义log日志简单打印
- 宏定义实现printf日志输出
- iOS 宏定义~log(打印日志)
- 自己定义日志类
- 日志输出 定义
- Python日志定义
- Apache - 日志格式定义
- 日志的定义
- 重新定义日志成员
- 一个打印日志的C宏定义——TRACEOUT
- 通过宏定义的日志插件-C语言
- 如何在程序中写log日志(定义log级别:error,warn, info, debug; 宏定义打印不同级别的日志; 程序中引用宏定义即可)
- 请问各位大神 怎么把这个程序排序的次数输出来?
- 查询oracle中正在运行的存储过程
- 从viewController讲到强制横屏,附IOS5强制横屏的有效办法
- eclipse整理import
- python 爬虫 url error : HTTP 403 Forbidden
- 日志宏定义
- 回归测试
- easyui combobox 高度问题
- iOS:NSString 使用杂记
- Stanford Machine Learning: (7). Clustering
- C#基础in,out,ref的作用和区别
- Windows窗口程序的生命周期
- Eclipse快捷键大全
- K-means算法