C++ 格式化日志輸出實(shí)現(xiàn)代碼
更新時(shí)間:2019年04月07日 21:23:42 作者:lzpong
這篇文章主要介紹了C++ 格式化日志輸出實(shí)現(xiàn)代碼,需要的朋友可以參考下
核心代碼
void LogOut(LPCTSTR pFormat, ...)
{
char LogFile[128]={0};
char str[1024]={0};
FILE** fp=&(ThreadDatas[0].pf);
va_list pArg;
EnterCriticalSection(&cs_log);//獨(dú)占訪問(wèn)
__try
{
SYSTEMTIME st;
if(ThreadDatas[0].num>100000)//10W條一個(gè)文件
{
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);//釋放獨(dú)占訪問(wèn)
}
好了,這篇文章就結(jié)束到這,后續(xù)腳本之家小編會(huì)為大家提供更多的代碼。
相關(guān)文章
C/C++ Socket設(shè)置接收超時(shí)時(shí)間的多種方法
網(wǎng)絡(luò)編程中經(jīng)常需要處理的一個(gè)問(wèn)題就是如何正確地處理Socket超時(shí),對(duì)于C/C++,有幾種常用的技術(shù)可以用來(lái)設(shè)置Socket接收超時(shí)時(shí)間,在這篇文章中,我們將詳細(xì)介紹如何在C/C++中設(shè)置Socket的非阻塞模式以及如何配置接收超時(shí)時(shí)間,需要的朋友可以參考下2024-01-01
C++ 實(shí)現(xiàn)求最大公約數(shù)和最小公倍數(shù)
這篇文章主要介紹了c++ 實(shí)現(xiàn)求最大公約數(shù)和最小公倍數(shù)的相關(guān)資料,需要的朋友可以參考下2017-05-05
C++實(shí)現(xiàn)路口交通燈模擬系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)路口交通燈模擬系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)掃雷游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11

