Если вы хотите получить эту информацию для файлов QML и интегрировать ее в вывод, вы можете использовать
qInstallMessageHandler(QtMessageHandler handler)
для установки собственной функции обработчика сообщений.Внутри этой функции у вас будет ссылка QMessageLogContext
, которая даст вам доступ к дополнительной информации, такой как имя файла, номер строки, имя функции и т. Д.
void msgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) {
static QTextStream ts(stdout);
static const char * err[] = {"", "WARNING: ", "ERROR!: ", "FATAL: ", ""};
QString m = QString(err[type]) + context.category + "/" + context.file + "@" + QString::number(context.line) + "-" + context.function + ": " + msg;
ts << msg << endl;
}
Теперь вы можете не захотетьобрабатывать все сообщения таким образом и ограничивать его каким-то конкретным шаблоном, чего легко достичь, включив определенный «заголовок» в строку сообщения и проверив, содержит ли это конкретное сообщение это или нет, и действуйте соответствующим образом.Например:
console.log("test") // regular msg
console.log("?test") // custom msg handling
Естественно, вы можете использовать массив заголовков для указания пользовательской обработки, сохранять журналы в разные файлы, отправлять сетевые сообщения или электронные письма в пользовательских форматах или что-то еще.Как только вы используете собственный обработчик, вы можете делать с сообщениями все, что захотите.