0

我的程序将各种日志信息保存到文本文件中。但是如果程序由于内存访问冲突等问题而崩溃,则日志文本文件中没有任何内容。

我相信这是因为程序未能关闭打开的日志文本文件。

目前,我正在使用FILE *来保存日志文本文件。我可能每次都可以打开和关闭来写每个日志,但我认为这开销太大。

无论程序崩溃或意外停止,还有其他方法可以保留日志吗?

我确实想在程序崩溃之前查看日志。

我正在为我的程序使用 C++/CLI。非常感谢您提前。

    FILE* logfile;        
    errno_t err;
    char LogFileNameBuf[512] = {0,};
    sprintf_s(LogFileNameBuf, "LogFile.txt");
    err = fopen_s(&logfile, LogFileNameBuf, "wt");

    if(logfile != NULL)
    {
        bLogfile = true;
        GetLocalTime(&st);
        sprintf_s(logBuf, "[%04d-%02d-%02d][%02d:%02d:%02d] SUCCESS:: Log Started\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
        fputs(logBuf, logfile); 
    }

    // close log file
    if(bLogfile == true) 
    {
        GetLocalTime(&st);
        sprintf_s(logBuf, "[%04d-%02d-%02d][%02d:%02d:%02d] SUCCESS:: Log File Closed\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
        fputs(logBuf, logfile);
        fclose(logfile);
    }
4

1 回答 1

1

您可以尝试使用fflush(). 每次写入日志时都可以这样做,以确保实际写入尽可能多的数据。

尽管我建议,当您使用 C++ 时,使用fstream而不是FILE*

于 2013-05-22T14:26:23.947 回答