Qt打印系统库的日志 - QLoggingCategory

Qt的动态库通过源码可以可以看到含有大量的qCInfoqCDebug 等大量的日志, 但是我们正常运行Qt程序,这些动态库或插件里面的日志是不会输出到我们的控制台里面的。
所以本章主要记录怎么输出这些日志出来。

一: 步骤

主要使用的是Qt的 函数 QLoggingCategory::setFilterRules(), 它可以设置各个日志模块的打印等级。
我们可以在main()函数的第一行这样设置.

代表任何模块的任何等级日志都会输出出来。

#include <QLoggingCategory>
int main(int argc, char *argv[])
{
	QLoggingCategory::setFilterRules(""
									 "*.debug=false\n"
									 "*.critical=true\n"
									 "*.warning=true\n"
									 "*.info=true\n"
									 "");
	
	QApplication a(argc, argv);
	
	MainWindow w;
	w.show();
	return a.exec();
}

我们查看控制台就可以发现Qt内容的日志可以查看了,方便追踪问题。
在这里插入图片描述

二: 过滤指定模块

有时候发现某些日志比较多,影响阅读了,可以过滤掉对应模块的日志。
比如 过滤上面日志中 Paint ended. Back buffer valid region is now QRegion(0,0 800x600)这个模块的日志。
我们通过源码搜索可以发现:
这个日志对应的category的方法为: lcQpaBackingStore
在这里插入图片描述
在搜索 lcQpaBackingStore 对应注册的 字符串的名字,就代表这个模块名字。我们现在指定过滤这个模块。
在这里插入图片描述
过滤代码为:
在上面正则后面追加指定模块的格式。
记得每行结尾的\n不能漏了, 不然不会生效。

#include <QLoggingCategory>
int main(int argc, char *argv[])
{
	QLoggingCategory::setFilterRules(""
									 "*.debug=false\n"
									 "*.critical=true\n"
									 "*.warning=true\n"
									 "*.info=true\n"
									 "qt.qpa.backingstore.debug=false\n"
									 "qt.qpa.backingstore.info=false\n"
	
	QApplication a(argc, argv);
	
	MainWindow w;
	w.show();
	return a.exec();
}

具体格式可以参考Qt官方说明:https://doc.qt.io/qt-6/qloggingcategory.html#configuring-categories
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值