现在的位置: 首页 > 综合 > 正文

DEBUG日志宏定义-简单日志分级

2013年03月30日 ⁄ 综合 ⁄ 共 856字 ⁄ 字号 评论关闭

最基本的:通常我们日志区分Debug日志和Release日志

    1. Debug日志详细打印出信息,包括开发定位的相关信息;

    2. Release日志只打印用户交互的信息,不打印和用户感受无关的信息;

一般可以基于_DEBUG变量定义宏来解决日志打印问题:

     例如可以如下定义debug时使用的日志宏

     打印debug信息时使用该LogPrintf,而在与用户交户的时候,使用printf宏.

 

通常的原则:Debug相关的信息,仅对Debug方式有效,对Release无任何影响,包括性能

#if _MSC_VER < 1400                // 版本较低时,不支持...类型的宏,屏蔽代码LogPrintf (vc60, vc70)
	#define LogPrintf //
#else                              // 1400之后的版本支持...类型的宏,此时来区分_Debug和_Release模式
	#ifdef _DEBUG
		#define LogPrintf(format, ...)\
		{\
			printf(format, __VA_ARGS__);\
		}
	#else
		#define LogPrintf(format, ...) 
	#endif
#endif

再进一步,我们希望打印 行号、文件名、函数名:

此时,借用系统中的宏可以实现

__FUNCTIONW__ 函数名(Unicode)

__FUNCTION__:   函数名(ANSI)

__FILEW__            文件名(Unicode)

__FILE__ :              文件名(ANSI)

__LINE__ :              行号

例如,在Debug日志中打印行号和文件名,方便定位,我们可以再定位一种Debug的Printf: LogPrintfWithFileLine

#define LogPrintfWithFileLine(format, ...)\
		{\
			printf(format, __VA_ARGS__);\
			printf(_T(" at %s<line:%d>\n"), __FILEW__ , __LINE__);\
		}

 

抱歉!评论已关闭.