随着我正在从事的项目变得越来越大,我已经厌倦了编写全面的日志消息,需要找出问题所在和出处。
因此,如果我可以将该信息自动合并到消息中,将非常有用。对于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.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
环境变量的详细信息。
关于qt - __FILE __,__ LINE__和__FUNCTION__用于QML文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409273/