gpt4 book ai didi

C++ - 连续读取实时日志文件的最新行

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:46 54 4
gpt4 key购买 nike

我编写了以下方法,它实质上是从另一个线程不断写入的日志文件中读取最新的行。此代码在不同的线程上运行并由计时器驱动(每 5 秒触发一次)。这很简单。这是它的样子:

void FileManager::ReadFile()
{
std::vector<std::string> vecLines;
std::string line;

m_InputStream.clear();

while (std::getline(m_InputStream, line))
{
vecLines.push_back(line);
}

if (! vecLines.empty())
{
OnFileUpdate(vecLines);
}
}

我的问题是,这段代码安全吗?基本上,我执行的算法是提前打开输入流并查找文件末尾。然后当这个方法被调用时,如果有任何新行要读取,那么它们将被读取到这里。如果有任何新行,则将通知此类的任何感兴趣的客户端(通过 OnFileUpdate() 调用)。

最佳答案

这需要一个在后台挂起的线程。

我要做的是创建一个类来处理您的所有错误/事件日志记录,如下所示。您可以将所有内容设为静态,这样您就可以从多个位置访问它优点:没有额外的文件 I/O没有辅助线程缺点:没有锁就不是多核安全

class EventLogger {
public:
EventLogger();
~EventLogger();
void LogEvent(const std::string &event) {
//Handle output to file here
OnFileUpdate(event);
}
private:
void OnFileUpdate(const std::string &event) {
//DoWorkHere
}
}

关于C++ - 连续读取实时日志文件的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512866/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com