У меня есть проблема, когда я регистрирую некоторую информацию в приложении, такую как запросы, сообщения, ответы, и в этом сегменте кода происходит то, что происходит. Моя цель — увидеть файл журнала во время работы приложения, что, по-видимому, сейчас не происходит, поэтому пользователь должен выйти из приложения и перейти в общую папку, чтобы просмотреть журналы. Я могу предоставить больше информации, если это необходимо.
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();
}
Заранее спасибо.
Вы используете буферизованный вывод с fflush после каждого сообщения, поэтому потенциально вы должны увидеть обновление файла (потому что данные записываются в ОС). Возможная причина, по которой вы этого не видите, заключается в том, что ОС не сбрасывает свои внутренние файловые буферы на диск. Вы можете попробовать функция _commit в Windows или же fsync в Linux
Других решений пока нет …