Название: QTextStream пишет в файл с задержками ( можно ли всегда дергать flush ? ) Отправлено: Ivan от Август 21, 2018, 11:08 Добрый день.
Пытаюсь реализовать простой логгер - запись логов в файл и вывод их же на виджет. Проблема в том, что QTextStream использует какой-то буфер, и если программа завершилась не корректно, то в файл ни чего не записывается. Или пропадает часть информации. Это не допустимо, т.к. задача логгера сообщить мне после какой операции программа вылетела. Для решения проблемы я поставил QTextStream.flush(); На сколько корректно так делать и есть ли альтернативы гарантирующие немедленную запись в файл? Запуск логгирования: Код: bool LoggerClass::init(const QString &filename) Запись строки логов: Код: void LoggerClass::log(const QString &text ) Название: Re: QTextStream пишет в файл с задержками ( можно ли всегда дергать flush ? ) Отправлено: deMax от Август 21, 2018, 11:17 не хотите делать flush, сделайте логику чтобы перед падением этот flush вызвался. Или для критичных сообщений делайте flush, а обычные(после которых программа не упадет), без сброса на диск.
Название: Re: QTextStream пишет в файл с задержками ( можно ли всегда дергать flush ? ) Отправлено: qate от Август 22, 2018, 10:04 пиши в консоль std::err, это гарантирует, что будет вывод виден
еще есть готовые логгеры, чтобы не писать свой, см. например https://github.com/gabime/spdlog Название: Re: QTextStream пишет в файл с задержками ( можно ли всегда дергать flush ? ) Отправлено: Ivan от Август 22, 2018, 11:00 Спасибо за ссылку. Обязательно изучу.
|