QT QDebug с QIODevice не работает

Я хотел, чтобы мое приложение QT сохраняло определенные журналы в разных файлах.
Я использовал qDebug() << "LOG Messages" выводить информацию.
Проблема в этом методе заключается в том, что все выходные данные будут отображаться на одном экране, даже если вы используете многопоточность.
Класс QDebug документирует, что я могу сделать QDebug (QIODevice * dev) для предоставления любого QIODEvice в качестве устройства для хранения данных. Поэтому я написал следующий код, но он не работает:

QString logfilePath = "/var/log/1.log";
QFile * logfile = new QFile(logfilePath);
if(!logfile->open(QIODevice::WriteOnly|QIODevice::Append)){
// There is an error
}else{
QDebug * logger = new QDebug(logfile);
*logger << "msg";
}

Файл создан, но информация в нем не сохраняется.
Я даже проверил код QDebug, и похоже, что он создает поток TEXT на QIODevice.
Так почему же выходной файл не сохраняется в файле?

Также я знаю функцию qMessageInstaller. Но это не будет работать для меня, потому что это универсальный обработчик, и я хотел бы, чтобы разные потоки хранили сообщения журнала в разных файлах.

0

Решение

Использовать этот

*logger << "Hello!" << endl;

Или это

*logger << "Hello!" << flush;

Не забудьте удалить регистратор, который также очистит поток.

delete logger;

Убедитесь, что вы пишете в разные файлы в разных темах.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]