Qt 之日志框架 QLoggingCategory

背景:

开发工作中,工程往往有很多模块,每个模块的打印也是秘密麻麻,每次定位问题,如何过滤掉其他模块的日志,或者如何给日志设置种类?或者当你想跟踪Qt的源码,如何打开Qt源码中的输出呢?Qt早就给你了很便利的工具,今天我们就来学习下这个 QLoggingCategory


QLoggingCategory:

QLoggingCategory表示运行时由字符串标识的特定日志记录类别。可以将类别配置为启用或禁用每种消息类型的消息日志记录。

要检查消息类型是否已启用,请使用以下方法之一:isDebugEnabled()、IsInfo enabled()、isWarningEnabled()和isCriticalEnabled()。

QLoggingCategory可以控制打印输出类别和模块。方便在调试时,过滤掉不关心的打印信息

如何在自己的代码模块中使用?

1 添加头文件
#include <QLoggingCategory>
2 使用宏 Q_LOGGING_CATEGORY(lCustomLog, “CustomLog”)
Q_DECLARE_LOGGING_CATEGORY(lCustomLog)

Q_DECLARE_LOGGING_CATEGORY是声明,声明后,lCustomlog 可在其他模块中使用

Q_LOGGING_CATEGORY(testLog,"test.requests")
Q_LOGGING_CATEGORY(lCustomLog, "CustomLog")

其中Q_LOGGING_CATEGORY为宏定义

3 设置过滤规则
QLoggingCategory::setFilterRules("CustomLog.*.debug=false");

如上则,CustomLog的debug打印不输出;

4 通过qCDebug、qCWarning、qCInfo、qCCritical输出
qCDebug(lCustomLog) << "this is a log !";
qCWarning(lCustomLog) << "this is other" << lCustomLog().categoryName();

其他控制方式:

环境变量

QT_LOGGING_CONF :环境变量,指定日志过滤规则的文件,可以是相对路径或绝对路径:

`export QT_LOGGING_CONF=./LoggingCategory/logconfig.ini`

QT_LOGGING_RULES :环境变量,可以设置多个规则用逗号分割:

QT_LOGGING_RULES="*.debug=false;logA.loga.debug=false"
QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true"

默认的Qt 日志配置文件为 qtlogging.ini

在这里插入图片描述
打开某个特定模块的日志输出,可追加
比如
qt.qpa.input.tablet=true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值