格式化日志输出
格式化日志输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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); //释放独占访问 } |
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
原文链接:https://www.cnblogs.com/lzpong/p/3955901.html
--- auth:lzpong
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!