Добрый день.
Пытаюсь реализовать простой логгер - запись логов в файл и вывод их же на виджет.
Проблема в том, что QTextStream использует какой-то буфер, и если программа завершилась не корректно, то в файл ни чего не записывается. Или пропадает часть информации.
Это не допустимо, т.к. задача логгера сообщить мне после какой операции программа вылетела.
Для решения проблемы я поставил QTextStream.flush();
На сколько корректно так делать и есть ли альтернативы гарантирующие немедленную запись в файл?
Запуск логгирования:
bool LoggerClass::init(const QString &filename)
{
    _logWidget = new LogWidget();
    _logFile = new QFile( filename );
    if( !_logFile->open( QFile::WriteOnly | QIODevice::Append | QIODevice::Unbuffered ) ) return false;
    _logStream = new QTextStream(_logFile);
    if( !(_logStream && _logStream->device()) ) return false;
    log( "\n\n######################################################\n" );
    log( QString("Runned at %1.").arg(QDateTime::currentDateTime().toString("dd.MM.yyyy")) );
    log ( "\n");
    return true;
}
Запись строки логов:
void LoggerClass::log(const QString &text )
{
    if( _logStream && _logStream->device() ) {
        *_logStream << text;
        _logStream->flush(); // Наверное, это не корректно ???
    } else {
        _logWidget->addLog( "\n\nError write to log-file.\n\n" );
    }
    _logWidget->addLog( text );
}