使用debugview分析问题时,outputdebugstring函数可以在debug和release版本中都显示信息,这比trace更加实用,但前提是你必须将它的参数形式修改成和trace或printf函数一样,下面给出简单修改后的函数形式,并利用宏定义实现日志输出:
int DebugPrintf(LPCTSTR ptzFormat, ...)
{
va_list vlArgs;
TCHAR tzText[1024];
va_start(vlArgs, ptzFormat);
//返回-1说明缓存不够 使用下面方式获取实际所需长度
//int iRealSize= _vsntprintf(NULL,0, ptzFormat, vlArgs);
int iRet= _vsntprintf(tzText,1024, ptzFormat, vlArgs);
if (iRet<0)
{
tzText[1023] = '\0';
}
OutputDebugString(tzText);
va_end(vlArgs);
return iRet;
}
#define LOG_PRINTF DebugPrintf
#define CONSTSTR_DEBUG "[DEBUG] "
#define CONSTSTR_INFO "[INFO] "
#define CONSTSTR_WARNING "[WARNING] "
#define CONSTSTR_ERROR "[ERROR] "
#define LOGLEVEL_DEBUG 1
#define LOGLEVEL_INFO 2
#define LOGLEVEL_WARN 3
#define LOGLEVEL_ERROR 4
int AppLogLevel()
{
static int iLogLevel =-1;
if(iLogLevel<0)