根据qlogging.h
#define qDebug QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).debug
Run Code Online (Sandbox Code Playgroud)
但是当我使用这样的时候,文件,行,功能名称都没有显示出来.
qDebug()<< "abc"; // only show abc;
qDebug()<< ""; // show nothing;
Run Code Online (Sandbox Code Playgroud)
我搜索了一会儿,似乎没有人像我上面那样有问题.
我使用ubuntu14.04,g ++版本4.8.2,从git构建qt5.3.
作为一个我正在研究的项目越来越大我厌倦了编写全面的日志消息,需要找出出错的地方和地点.
因此,如果我可以自动将这些信息合并到消息中,那将非常有用.对于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代码库的"控制台"并没有发现任何东西.
请注意,我已经找到了这个,但它对我没有用,因为我需要为特定的消息子集,并且不希望覆盖所有输出的默认消息处理程序.