Я хотел, чтобы мое приложение 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. Но это не будет работать для меня, потому что это универсальный обработчик, и я хотел бы, чтобы разные потоки хранили сообщения журнала в разных файлах.
Использовать этот
*logger << "Hello!" << endl;
Или это
*logger << "Hello!" << flush;
Не забудьте удалить регистратор, который также очистит поток.
delete logger;
Убедитесь, что вы пишете в разные файлы в разных темах.
Других решений пока нет …