我是Qt / QML主题的新手,我正在尝试在我的c ++业务逻辑中安装日志记录处理程序。以下代码snipet安装了一个处理程序并设置了一个特殊类别:
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中的'cateory'总是'qml'。是否可以直接在QML中设置另一个类别?
答案 0 :(得分:7)
从Qt 5.8开始,在QML中开箱即用的分类记录available。
日志记录类别可以作为传递给console.log()和朋友 第一个论点。如果提供给记录器LoggingCategory的 name将用作Logging Category,否则将用作默认日志记录 将使用类别。
import QtQuick 2.8
Item {
LoggingCategory {
id: category
name: "com.qt.category"
}
Component.onCompleted: {
console.log(category, "message");
}
}
答案 1 :(得分:4)
我认为没有可用于在QML引擎中覆盖默认类别的开箱即用解决方案。 Here是可能的解决方案和非常好的解释和代码。