【发布时间】:2013-05-22 14:19:33
【问题描述】:
我的程序将各种日志信息保存到文本文件中。但是如果程序由于内存访问冲突等问题而崩溃,则日志文本文件中没有任何内容。
我相信是因为程序未能关闭打开的日志文本文件。
目前,我使用 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* 指针非常简单。我将编辑我的原始帖子以显示我的代码。谢谢。
-
看起来你已经得到了答案——如果你发布代码,那么将来每个人都会更容易,这样就不会有人猜测了。
-
谢谢,马特。从现在开始我会这样做。