格式化日志输出

格式化日志输出

 

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
posted @   _Ong  阅读(1646)  评论(0编辑  收藏  举报
编辑推荐:
· 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代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示