我遇到了一个问题,即我正在记录一些应用程序信息,例如请求,消息,响应,并且代码的这一部分就是它发生的地方。我的目标是在应用程序运行时看到日志文件,这似乎不会立即发生,因此用户必须退出应用程序,然后转到公用文件夹才能查看日志。如果需要,我可以提供更多信息。
void LogClass::log(const char* pcszComponent, const char* pcszLevel, const CF1String& title, const CF1String& message)
{
m_guard.lock();
QByteArray byteArray(QTime::currentTime().toString("HH:mm:ss.zzz").toAscii());
XXString logMessage = XXFormatString("[%s] [%7s] [%4s] [%08X] [%s] [%s]\r\n", byteArray.constData(), pcszLevel, pcszComponent, QThread::currentThreadId(), title.c_str(), message.c_str());
if (!m_pLogFile) {
createLogFile();
}
if (m_pLogFile) {
fputs(logMessage.c_str(), m_pLogFile);
fflush(m_pLogFile);
}
m_guard.unlock();
}
提前致谢。
答案 0 :(得分:1)
在每条消息之后,您正在使用带有fflush的缓冲输出,因此您可能应该能够看到文件更新(因为数据已写入OS)。您没有看到它的可能原因是操作系统没有将其内部文件缓冲区刷新到磁盘。您可以尝试_commit function on Windows或fsync on Linux