QML文件的__FILE __,_ _ _ 3和__FUNCTION__?

时间:2016-12-31 14:50:17

标签: 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代码库中的“console”并没有找到任何内容。

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

1 个答案:

答案 0 :(得分:9)

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环境变量的详细信息。