博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Qt】通过QtCreator源码学习Qt(五):QLoggingCategory管理、分类、过滤打印信息
阅读量:4223 次
发布时间:2019-05-26

本文共 2053 字,大约阅读时间需要 6 分钟。

1、QLoggingCategory简介

在QtCreator源码中新学到一个类QLoggingCategory。

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

2、使用方法

声明

在头文件中声明,供其它文件使用

#include 
Q_DECLARE_LOGGING_CATEGORY(logAa)

 

 

创建:

使用宏Q_LOGGING_CATEGORY创建

Q_LOGGING_CATEGORY(logAa, "logA.loga")

过滤输出

在main函数中设置过滤,指定哪些日志需要输出,哪些不需要:

QLoggingCategory::setFilterRules(QLatin1String("logA.loga.debug=false"));

使用

qCDebug(logAa) << "Cannot open file";

类似还有qCCritical、qCInfo、qCWarning等

3、宏定义的源码

#define Q_DECLARE_LOGGING_CATEGORY(name) \    extern const QLoggingCategory &name();	#define Q_LOGGING_CATEGORY(name, ...) \    const QLoggingCategory &name() \    { \        static const QLoggingCategory category(__VA_ARGS__); \        return category; \    }

4、setFilterRules函数过滤规则说明

设计名字时建议用这种规则:程序.模块.子模块

注册四个log:

Q_LOGGING_CATEGORY(logAa, "logA.loga")	Q_LOGGING_CATEGORY(logAb, "logA.logb")	Q_LOGGING_CATEGORY(logBa, "logB.loga")	Q_LOGGING_CATEGORY(logBb, "logB.logb")

试验方法:

//关闭logAa debug输出	QLoggingCategory::setFilterRules(QLatin1String("logA.loga.debug=false"));	//关闭logBb info输出	QLoggingCategory::setFilterRules(QLatin1String("logB.logb.info=false"));	//关闭log*b waring输出	QLoggingCategory::setFilterRules(QLatin1String("*.logb.warning=false"));	//关闭logAa 所有输出	QLoggingCategory::setFilterRules(QLatin1String("logA.loga*=false"));	//关闭logA 所有输出	QLoggingCategory::setFilterRules(QLatin1String("logA*=false"));	//关闭logAa debug 和 info 输出	QLoggingCategory::setFilterRules(QLatin1String("logA.loga.debug=false\n"												   "logA.loga.info=false"));												   	//只打开logAa debug输出	QLoggingCategory::setFilterRules(QLatin1String("*=false\nlogA.loga.debug=true"));

5、其它方法设置规则及优先级

共有五种方法设置日志过滤规则,如下优先级依次递增:

A) [QLibraryInfo::DataPath]/qtlogging.ini

B)QtProject/qtlogging.ini:在/home/zet/.config/QtProject创建qtlogging.ini文件
C)setFilterRules()
D)QT_LOGGING_CONF :环境变量,指定日志过滤规则的文件,可以是相对路径或绝对路径:export QT_LOGGING_CONF=/test/qt/LoggingCategory/logconfig.ini
E)QT_LOGGING_RULES:环境变量,可以设置多个规则用逗号分割:QT_LOGGING_RULES="*.debug=false;logA.loga.debug=false"

日志过滤规则文件 格式如下:

[Rules]	*.debug=false	logA.loga.debug=true

转载地址:http://cghmi.baihongyu.com/

你可能感兴趣的文章
UVM:7.7.4 扩展位宽
查看>>
UVM:7.8.1 get_root_blocks
查看>>
UVM:7.8.2 get_reg_by_offset 函数
查看>>
UVM:8.1.1 任务与函数的重载
查看>>
UVM:8.1.2 约束的重载
查看>>
UVM:8.2.2 重载的方式及种类
查看>>
UVM:8.2.3 复杂的重载
查看>>
UVM:8.2.4 factory 机制的调试
查看>>
UVM:8.3.1 重载transaction
查看>>
UVM:8.3.2 重载sequence
查看>>
leetcode171.[math] Excel Sheet Column Number
查看>>
Log4j配置
查看>>
java发送https请求
查看>>
java发送https请求证书问题
查看>>
js新消息提醒
查看>>
js窗体消息提醒
查看>>
深入Hibernate映射文件(二)——<hibernate-mapping>的属性
查看>>
详解在Spring中进行集成测试
查看>>
Hibernate 的工具类
查看>>
Struts2中过滤器和拦截器的区别
查看>>