qSetMessagePattern( "%{file}(%{line}): %{message}" ) 输出"unkown(0)"



我使用qSetMessagePattern来格式化输出。

奇怪的是,即使我设置了%{file}%{line},我的输出中也只能得到unknown0%{function}也是如此。来源和输出如下:

qSetMessagePattern("%{file}(%{line}): %{message}");
qDebug() << "msg";

输出:

unknown(0): msg

有什么想法吗?谢谢

addDEFINES += QT_MESSAGELOGCONTEXT到您的xxx.pro,然后,重建

make clean && make distclean && qmake && make 

我希望这能对你有所帮助。

尝试为您构建的目标添加:

target_compile_definitions(${PROJECT_NAME} PRIVATE -DQT_DEBUG -DQT_MESSAGELOGCONTEXT)

-DQT_NO_DEBUG一起使用时,似乎-DQT_DEBUG具有优先级。

我使用了这个提示https://stackoverflow.com/a/24012195/2656799以绕过问题。在qlogging.h(请参阅)中,您可以看到调试宏是如何定义的:

#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

相关内容

  • 没有找到相关文章

最新更新