我的程序將各種日誌信息保存到文本文件中。但是,如果程序由於內存訪問衝突等問題而崩潰,則日誌文本文件中沒有任何內容。保存日誌文本文件而不管崩潰
我相信這是因爲程序未能關閉打開的日誌文本文件。
目前,我正在使用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);
}
顯示您使用的是記錄錯誤的代碼?在過去,我記得不得不調用'FileStream.Flush()',以便在進程終止之前將內容寫出到文件中。 –
當前代碼通過使用FILE *指針非常簡單。我將編輯我的原始帖子以顯示我的代碼。謝謝。 – diehard98
看起來像你已經得到了你的答案 - 如果你發佈代碼,以便沒有人被猜測,未來將更容易。 –