【发布时间】:2015-10-26 14:15:23
【问题描述】:
我是 Qt/QML 主题的新手,我正在尝试在我的 c++ 业务逻辑中安装一个日志处理程序。以下代码片段安装一个处理程序并设置一个特殊类别:
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);
QLoggingCategory mainEx("main.ex");
qCDebug(mainEx) << "debug message";
...
}
结果是从 Qt 后端调用以下已安装的消息处理程序:
void myMessageOutput(QtMsgType type, const QMessageLogContext &context,
const QString &msg)
{
...
}
在 Qt 5 中,也可以直接在 QML 中编写调试消息:
console.debug("debug message")
但 QMessageLogConext 中的“类别”始终是“qml”。是否可以直接在 QML 中设置另一个类别?
【问题讨论】:
-
很高兴知道您为什么需要更多类别。你想达到什么目的?您可以使用
QMessageLogConext的其他成员 (file, function, line) 来获取更多有关日志记录语句来源的上下文。 -
我想在一个应用程序中使用不同的 QML 扩展并且需要一个日志系统,我可以在其中打印依赖于其来源的消息。例如,如果在类别中写入“extension1”,并设置了 qDebug() 消息,则此类别(包括消息)将出现在自定义处理程序中。所以我可以使用类别找出 qDebug 消息产生的扩展名。