格式化日志输出

格式化日志输出

 

void LogOut(LPCTSTR pFormat, ...)
{
	char LogFile[128]={0};
	char str[1024]={0};
	FILE** fp=&(ThreadDatas[0].pf);

    va_list pArg;

	EnterCriticalSection(&cs_log);//独占访问
	__try
	{
		SYSTEMTIME st;
		if(ThreadDatas[0].num>100000)//10W条一个文件
		{
			if(fp)
			{
				fclose(*fp);
				*fp=0;
			}
			ThreadDatas[0].num=0;
		}
		if(NULL==*fp)
		{
			char tstr[20]={0};
			//GetSystemTime(&st);
			GetLocalTime(&st);
			sprintf(LogFile,".\\logs\\ASR_%04d-%02d-%02d.%02d_%02d_%02d.log",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
			*fp=fopen(LogFile,"a+");
			if( NULL==*fp )
			{
			//printf("Create LogFile faile %s\n",LogFile);
				LogEvent("Create LogFile faile %s",LogFile);
				return;
			}
			//else
			//LogEvent("Create LogFile %s",LogFile,*fp);
		}
		GetLocalTime(&st);
		sprintf(str,"%04d-%02d-%02d %02d:%02d:%02d.%03d %s",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond,st.wMilliseconds,pFormat);
		va_start(pArg, pFormat);
		//fprintf(*fp,chMsg);
		vfprintf(*fp, str, pArg);
		va_end(pArg);
		fflush(*fp);
	}
	__except(EXCEPTION_EXECUTE_HANDLER)
	{
		LogEvent("Thread Log file Error:%s",LogFile);
	}
	LeaveCriticalSection(&cs_log);//释放独占访问
}

 

posted @ 2014-09-04 13:40  _Ong  阅读(1645)  评论(0编辑  收藏  举报