为console.log设置QML类别

时间:2015-10-26 14:15:23

标签: c++ qt qml

我是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中设置另一个类别?

2 个答案:

答案 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是可能的解决方案和非常好的解释和代码。