C++ 格式化日志输出实现代码

 更新时间:2019年04月07日 21:23:42   作者:lzpong  
这篇文章主要介绍了C++ 格式化日志输出实现代码,需要的朋友可以参考下

核心代码

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);//释放独占访问
}

好了,这篇文章就结束到这,后续脚本之家小编会为大家提供更多的代码。

相关文章

  • C/C++ Socket设置接收超时时间的多种方法

    C/C++ Socket设置接收超时时间的多种方法

    网络编程中经常需要处理的一个问题就是如何正确地处理Socket超时,对于C/C++,有几种常用的技术可以用来设置Socket接收超时时间,在这篇文章中,我们将详细介绍如何在C/C++中设置Socket的非阻塞模式以及如何配置接收超时时间,需要的朋友可以参考下
    2024-01-01
  • C++ 实现求最大公约数和最小公倍数

    C++ 实现求最大公约数和最小公倍数

    这篇文章主要介绍了c++ 实现求最大公约数和最小公倍数的相关资料,需要的朋友可以参考下
    2017-05-05
  • C语言指针用法总结

    C语言指针用法总结

    本文详细讲解了C语言指针用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 图文详解c/c++中的多级指针与多维数组

    图文详解c/c++中的多级指针与多维数组

    多维数组与多级指针是初学者经常感觉迷糊的一个地方。超过二维的数组和超过二级的指针其实并不多用。但只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。
    2016-08-08
  • 解析四方定理的应用

    解析四方定理的应用

    所有自然数至多只要用四个数的平方和就可以表示
    2013-05-05
  • C++中的unordered_map用法

    C++中的unordered_map用法

    当你在C++中需要使用哈希表(无序映射)来管理键值对时,unordered_map 是一个非常有用的数据结构,本文主要介绍了C++中的unordered_map用法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 利用QT实现图片浏览器的示例详解

    利用QT实现图片浏览器的示例详解

    这篇文章主要和大家分享一个小案例:利用QT制作一个小的图片浏览器,要求可以显示jpg、jpeg、png、bmp,还可以从电脑上拖动图到窗口并显示出来,感兴趣的可以了解一下
    2023-02-02
  • C++ 超详细示例讲解list的使用

    C++ 超详细示例讲解list的使用

    list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的
    2022-07-07
  • C++实现路口交通灯模拟系统

    C++实现路口交通灯模拟系统

    这篇文章主要为大家详细介绍了C++实现路口交通灯模拟系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C语言开发实现扫雷游戏

    C语言开发实现扫雷游戏

    这篇文章主要为大家详细介绍了C语言开发实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论