当前位置:主页 > c/c++教程 > C++ 格式化日志

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

发布:2022-04-24 08:18:47 59


给网友朋友们带来一篇C++ 格式化相关的编程文章,网友于苏凉根据主题投稿了本篇教程内容,涉及到C++、格式化日志、C++ 格式化日志相关内容,已被201网友关注,内容中涉及的知识点可以在下方直接下载获取。

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

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


参考资料

相关文章

网友讨论