您的位置:首页 > 其它

一个打印日志函数

2008-01-14 16:51 393 查看
#include<stdio.h>

#include<windows.h>
enum E_TraceLevel // ¸ú×Ù¼¶±ð
{
e_DEBUG = 0,
e_TRACE = 1,
e_ERROR = 2,
e_LOG = 3,
e_ALARM = 4,
e_FATAL = 5,
e_ASSERT= 6
};

int gRunLevel = e_DEBUG;
#define LOG_DEBUG e_DEBUG, __FILE__, __LINE__
#define LOG_TRACE e_TRACE, __FILE__, __LINE__
#define LOG_ERROR e_ERROR, __FILE__, __LINE__
#define LOG_LOG e_LOG, __FILE__, __LINE__
#define LOG_ALARM e_ALARM, __FILE__, __LINE__
#define LOG_FATAL e_FATAL, __FILE__, __LINE__

#define PRINTLOG PrintLog
void PrintLog (
IN E_TraceLevel _eTraceLevel
, IN const char *_sFile
, IN const int _iLine
, IN const char *_sFmt
, IN ...)
{
if(gRunLevel > _eTraceLevel) return;
va_list args;
char strInformation[2048];
va_start(args, _sFmt);
_vsnprintf(strInformation, sizeof(strInformation)-1,_sFmt,args);

FILE * fp = fopen("log.txt", "a");
SYSTEMTIME DateTime;
if(fp == NULL)
{
return;
}
GetLocalTime(&DateTime);
fprintf(fp
, "[%04d-%02d-%02d %02d:%02d:%02d] [File:%d Line:%d] %s /n"
, DateTime.wYear
, DateTime.wMonth
, DateTime.wDay
, DateTime.wHour
, DateTime.wMinute
, DateTime.wSecond
, _sFile
, _iLine
, strInformation
);
fclose(fp);

va_end(args);
}

//使用得例子
int main(int argc, char* argv[])
{
PRINTLOG(LOG_DEBUG, "test log fun [%d]", 20);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐