如何编写日志文件,以便可以使用记事本实时读取它以进行C++

How to write log file so that it can be read with notepad in real time for C++

本文关键字:读取 实时 C++ 记事本 可以使 日志 何编写 文件      更新时间:2023-10-16

我需要一个记录器来C++。我找到了这篇文章 小型记录器类,这使我找到了这个简单的记录器 http://www.drdobbs.com/cpp/201804215。

它主要使用以下方法来访问日志文件。

FILE* pFile = fopen("application.log", "a");
std::ostringstream os;
os<<"I am a log line."<<std::endl;
fprintf(pFile, "%s", os.str().c_str());
fflush(pFile);

但它并没有像我预期的那样工作。我假设,在记事本中打开日志文件后,每个新的日志行都会立即显示在fprintffflush之后。但事实证明,我必须使用记事本关闭并重新打开文件才能看到更新。

那么有没有办法在允许实时读取的C++中写入日志文件,从而使日志文件类似于win32控制台或VS输出窗口?我怀念在 Javascript 中将所有内容转储到控制台.log的日子。:)

谢谢。

这不是你的代码的问题,这是记事本的问题。 记事本不会自动检查已打开文件中的更改。

相反,你应该使用一个工具,例如Notepad++,或者实际上是为程序员设计的大多数编辑器。

如果您已安装 cygwin,您还可以使用tail -f来监视对日志文件的添加。

在 mjs 接受的答案为我指明了正确的方向后,我在谷歌上搜索了"记事本自动刷新"并找到了这个 https://www.raymond.cc/blog/monitor-log-or-text-file-changes-in-real-time-with-notepad/。

它提供了几个选项来监视Windows中的文本文件更改,包括Notepad++和其他专门用于监视文本文件更改的软件,具有关键字过滤/突出显示和保存/加载监视会话等功能。

如果您遇到与我相同的问题,您可能会发现它很有趣。干杯。