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

dte*_*ech 4 qt qml

作为一个我正在研究的项目越来越大我厌倦了编写全面的日志消息,需要找出出错的地方和地点.

因此,如果我可以自动将这些信息合并到消息中,那将非常有用.对于C++,我们有方便__FILE__,__LINE____FUNCTION__宏,但我似乎还没有找到任何的QML.

请注意,console.trace()控制台中的跟踪以下列格式输出:

onCompleted (qrc:/main.qml:72)

所以它包括函数,文件和行,这是我所需要的,因此我假设已经存在一种方法来获取它们.自然,console.trace()并没有真正削减它,因为它直接输出到控制台,而我需要那些作为字符串,以包含在我的日志消息中.

那么有什么办法可以获得这些吗?

当然我不想让它们进入实际的QML源代码,但是同样的方式console.trace()- 在Log.error()调用my的地方,所以我可以Log.error("some error")而不是Log.error("some error in " + file + ", at " + line + " while executing " + func)实际上比手动编写整个东西更乏味.

或者,我也很感激,如果有人能指出我对consoleqml 的实现,因为我梳理了整个qtdeclarative代码库的"控制台"并没有发现任何东西.

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

Ans*_*mar 10

console.log,console.debug,console.info,console.warnconsole.error可用于打印调试信息发送到控制台.使用时,将生成的输出qDebug,qWarning,qCritical用C++方法(也参见调试技术和功能如何这样被实现,特别是这个内部函数).设置环境变量QML_CONSOLE_EXTENDED还会打印呼叫的源代码位置.例如,

export QT_MESSAGE_PATTERN="[%{type}] %{appname} (%{file}:%{line}) - %{message}"
Run Code Online (Sandbox Code Playgroud)

现在输出看起来像这样,

some_example

链接包含有关自定义QT_MESSAGE_PATTERN环境变量的详细信息.