作为一个我正在研究的项目越来越大我厌倦了编写全面的日志消息,需要找出出错的地方和地点。
因此,如果我可以自动将这些信息合并到消息中,那将非常有用。对于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>
答案 0 :(得分:9)
console.log
,console.debug
,console.info
,console.warn
和console.error
可用于将调试信息打印到控制台。输出是使用C ++中的qDebug
,qWarning
,qCritical
方法生成的(另请参阅Debugging Techniques以及此类函数如何implemented,尤其是this internal function })。设置环境变量QML_CONSOLE_EXTENDED
还会打印调用的源代码位置。例如,
export QT_MESSAGE_PATTERN="[%{type}] %{appname} (%{file}:%{line}) - %{message}"
现在输出看起来像这样,
此link包含有关自定义QT_MESSAGE_PATTERN
环境变量的详细信息。