qt - __FILE __,__ LINE__和__FUNCTION__用于QML文件吗?

标签 qt qml

随着我正在从事的项目变得越来越大,我已经厌倦了编写全面的日志消息,需要找出问题所在和出处。

因此,如果我可以将该信息自动合并到消息中,将非常有用。对于C++,我们有方便的__FILE____LINE____FUNCTION__宏,但是我似乎没有找到任何适用于QML的宏。

请注意,存在console.trace(),它以以下格式在控制台中输出跟踪:
onCompleted (qrc:/main.qml:72)
所以它包括函数,文件和行,这是我所需要的,因此我认为已经存在一种获取这些函数的方法。自然,console.trace()并没有真正削减它,因为它直接输出到控制台,而我需要将它们作为字符串并入我的日志消息中。

那么有什么办法可以得到那些呢?

自然,我不想在实际的QML源代码中获取它们,但是console.trace()的方式相同-在调用Log.error()的地方,所以我可以只使用Log.error("some error")而不是Log.error("some error in " + file + ", at " + line + " while executing " + func),这实际上比编写整个代码还要乏味手动的东西。

另外,如果有人可以指出我对qml console的实现,我也将不胜感激,因为我梳理了整个“控制台”的qtdeclarative代码库,却一无所获。

请注意,我已经找到了this,但是它对我来说并没有用,因为我需要用于特定的消息子集,并且不想覆盖所有输出的默认消息处理程序。

最佳答案

console.logconsole.debugconsole.infoconsole.warnconsole.error可用于将调试信息打印到控制台。输出是使用C++中的qDebugqWarningqCritical方法生成的(另请参见Debugging Techniques以及此类功能如何是implemented,尤其是this internal function)。设置环境变量QML_CONSOLE_EXTENDED还会打印调用的源代码位置。例如,

export QT_MESSAGE_PATTERN="[%{type}] %{appname} (%{file}:%{line}) - %{message}"

现在输出看起来像这样,

some_example

link包含有关自定义QT_MESSAGE_PATTERN环境变量的详细信息。

关于qt - __FILE __,__ LINE__和__FUNCTION__用于QML文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409273/

相关文章:

c++ - Qt中QUndoCommand的使用方法

c++ - QSignalMapper 可以转发函数参数吗?

qt - 在 QML 中更改组合框颜色的正确方法

c++ - 如何为第 3 方渲染提供空 QML 项的 OpenGL 上下文?

qt - Qml 可滑动页面

qt - 需要在 QML 中更改 SVG 图像的颜色

c++ - QFontMetrics 返回宽度非常错误的边界矩形

c++ - Qt 样式 - 双色边框?

c++ - Qt5 - 为什么不截图并保存到文件中?

qt - 使用 QtWebKit 1.0 Webview 不可滚动