我正在使用qSetMessagePattern
格式化输出。
奇怪的是,我设置了%{file}
和%{line}
,我只能在输出中获得unknown
和0
。 %{function}
也是如此。来源和输出如下:
qSetMessagePattern("%{file}(%{line}): %{message}");
qDebug() << "msg";
输出:
unknown(0): msg
有什么想法吗?谢谢!
答案 0 :(得分:0)
添加
DEFINES += QT_MESSAGELOGCONTEXT
到你的xxx.pro,
然后,重建
make clean && make distclean && qmake && make
我希望这可以帮到你。
答案 1 :(得分:0)
尝试为您构建的目标添加:
target_compile_definitions(${PROJECT_NAME} PRIVATE -DQT_DEBUG -DQT_MESSAGELOGCONTEXT)
似乎-DQT_DEBUG
与-DQT_NO_DEBUG
一起使用时具有优先权。
答案 2 :(得分:0)
我使用此提示https://stackoverflow.com/a/24012195/2656799来绕过问题。在qlogging.h(see there)中,您可以看到调试宏的定义方式:
#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal
所以我的解决方案是使用标准文件,行上下文宏重新定义它们:
#define logDebug QMessageLogger(__FILE__,__LINE__, QT_MESSAGELOG_FUNC).debug
#define logInfo QMessageLogger(__FILE__,__LINE__, QT_MESSAGELOG_FUNC).info
#define logWarning QMessageLogger(__FILE__,__LINE__, QT_MESSAGELOG_FUNC).warning
#define logCritical QMessageLogger(__FILE__,__LINE__, QT_MESSAGELOG_FUNC).critical
#define logFatal QMessageLogger(__FILE__,__LINE__, QT_MESSAGELOG_FUNC).fatal