程序是24小时运行的。程序需要写日志,要求是“每天记录一个文件”怎么实现“每天记录一个文件”。

解决方案 »

  1.   

    你用日志生成的时间做文件名不就好了,要记得用年月日做文件名。然后写一个处理函数// 写每一条log前都要记录当时的时间
    LogEx(CTime time, CString strlog)
    {
    //最好记录下文件的时间
    if()//通过文件名来比较Time的年月日
    {
    //符合条件写入
    }
    else
    {
    //通过文件句柄来关闭文件,新创建一个文件
    if(m_hFile ...)
    {
    //做Close操作
    }
    .//创建一个新的
    }
    }
      

  2.   

    先获取当日日期,记录文件名是年_月_日。
    每次以创建模式打开文件,append写。
    这样每天只在第一次创建。
    第2天再写又是新文件。
      

  3.   

    如下函数实现每天一个调试日志文件,供参考:
    void WriteDebug(LPTSTR pszMess)
    {#if WRITE_DEBUG CStdioFile File;
    TCHAR sz[1024]={0};//buf length!
    sprintf(sz,
    _T("%sSLog_%s.txt"),
    g_szRootPath,
    COleDateTime::GetCurrentTime().Format(_T("%y%m%d"))); if (!File.Open(sz, CFile::modeWrite | CFile::modeCreate| 
    CFile::modeNoTruncate | CFile::typeText, 0)) 
    {
            return ;
        } 
    time_t tm;
    time(&tm);
    struct tm *p;
    p= localtime( &tm );

    sprintf(sz,
    _T("[%02d-%02d-%02d %02d:%02d:%02d]%s\r\n"),
    p->tm_year%100,p->tm_mon+1,p->tm_mday,
    p->tm_hour,p->tm_min,p->tm_sec,
    pszMess); TRY 
    {

    File.SeekToEnd();
    File.WriteString(sz);
    File.Close(); } 
    CATCH (CFileException, e) 
    {
            return ;
        } 
    END_CATCH
    #endif}
      

  4.   

    void WriteToLog(LPTSTR lpInfo)
    {
        SYSTEMTIME systm;
        FILE *fLogBuf;
        GetLocalTime( &systm );

        char cpFile[100]={0};

        sprintf(cpFile,"Log%02d%02d.txt",systm.wMonth ,systm.wDay );    fLogBuf = fopen(cpFile,"a+");
        if(fLogBuf == NULL )
        {
            return;
        }    fprintf(fLogBuf,"%02d:%02d:%02d:%03d  ",systm.wHour,systm.wMinute,systm.wSecond,systm.wMilliseconds );
        fprintf( fLogBuf,"Send[ASC]=%s\n",lpInfo);    fclose(fLogBuf);
        return TRUE;
      

  5.   

    void WriteToLog(LPTSTR lpInfo) 

        SYSTEMTIME systm; 
        FILE *fLogBuf; 
        GetLocalTime( &systm );               //得到当时的系统时间    char cpFile[100]={0};     sprintf(cpFile,"Log%02d%02d.txt",systm.wMonth ,systm.wDay ); //文件名,以天来区别    fLogBuf = fopen(cpFile,"a+");               
        if(fLogBuf == NULL ) 
        { 
            return; 
        }     fprintf(fLogBuf,"%02d:%02d:%02d:%03d   ",systm.wHour,systm.wMinute,systm.wSecond,systm.wMilliseconds );
        fprintf( fLogBuf,"s\n",lpInfo);                        //写入记录的日记信息    fclose(fLogBuf); 
        return;
    }