0.简介
QLoggingCategory在运行时表示某个日志记录类别(由字符串标识),可以将消息类别配置为启用或禁用。Qt有六种消息类型,四个普通的QtDebugMsg、QtInfoMsg、QtWarningMsg、QtCriticalMsg,外加两个特殊的QtFatalMsg和QtSystemMsg,一般操作四个普通的消息类型。
1.基本使用头文件中使用宏声明
#include
Q_DECLARE_LOGGING_CATEGORY(mylog)
源文件中使用宏定义
Q_LOGGING_CATEGORY(mylog, "mymodule.mylog")
//也可以加上初始日志级别
Q_LOGGING_CATEGORY(mylog, "mymodule.mylog", QtWarningMsg)
配置注意事项,日志记录类别字符串的命名(mymodule.mylog那一串)
- 仅使用字母和数字。
- 使用点将类别进一步划分为公共区域。
- 避免类别名称:
debug
,info
,warning
,和critical
。 - 带有
qt
前缀的类别名称仅保留用于Qt模块。
可以设置全局过滤规则,使用字符串匹配
(下面代码把宏定义时设置的Warning级别覆盖了,现在所有类别都会输出)
QLoggingCategory::setFilterRules("mymodule.mylog*=true");
多个规则字符串用换行符分隔,每一行格式为: [.] = true|false
多次调用这个函数的话会以最后一次为准,所以多个设置要么放到一个规则配置,要么单独对指定QLoggingCategory设置。
也可以安装过滤器
在这种情况下,将忽略所有过滤器规则
(参照文档示例,注意install一个无效的过滤器会使用默认的并返回,这样就拿到了默认的)
QLoggingCategory::CategoryFilter old_filter;
//除了指定的都用默认的过滤器
void new_filter_func(QLoggingCategory *category)
{
if (qstrcmp(category->categoryName(), "mymodule.mylog") == 0)
category->setEnabled(QtDebugMsg, true);
else
old_filter(category);
}
// ... ...
void main()
{
old_filter=QLoggingCategory::installFilter(nullptr);
QLoggingCategory::installFilter(new_filter_func);
}
使用方式
(可以用qCDebug、qCInfo、qCWarning、qCCritical来使用自己定义的QLoggingCategory)
//默认的QLoggingCategory或qt.xx来管理
qDebug()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?