Вам потрібно встановити обробник повідомлень за допомогою qInstallMsgHandler
функції, а потім ви можете використовувати QTextStream
для написання повідомлення про налагодження у файл. Ось приклад прикладу:
#include <QtGlobal>
#include <stdio.h>
#include <stdlib.h>
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
Взято з документа qInstallMsgHandler
(я лише додав коментарі):
У наведеному вище прикладі функція myMessageOutput
використовує stderr
який, можливо, ви захочете замінити іншим потоком файлів або повністю перепишіть функцію!
Після того, як ви пишете , і встановити цю функцію, всі ваші qDebug
(а також qWarning
, і qCritical
т.д.) повідомлення будуть перенаправлені в файл ви пишете в обробнику.