qSetMessagePattern 是 Qt 提供的一个函数,用于自定义 Qt 的日志输出格式。它允许你使用占位符来定义日志消息的结构,适用于 qDebug()、qInfo()、qWarning()、qCritical() 和 qFatal() 等日志输出函数。
基本用法
#include<QDebug>
#include<QLoggingCategory>
intmain(){
// 设置日志输出格式
qSetMessagePattern("[%{time yyyy-MM-dd hh:mm:ss}] %{type} (%{file}:%{line}) - %{message}");
// 测试日志输出
qDebug()<<"This is a debug message";
qWarning()<<"This is a warning message";
qCritical()<<"This is a critical message";
return0;
}
输出示例
[2023-10-0114:30:45]debug(main.cpp:8)-This is a debug message
[2023-10-0114:30:45]warning(main.cpp:9)-This is a warning message
[2023-10-0114:30:45]critical(main.cpp:10)-This is a critical message
支持的占位符
qSetMessagePattern 支持多种占位符,用于自定义日志格式:
|
占位符 |
说明 |
|---|---|
%{appname} |
应用程序名称 ( |
%{type} |
日志级别( |
%{time} |
日志时间(默认格式 |
%{time [format]} |
自定义时间格式(如 |
%{file} |
源代码文件名 |
%{line} |
源代码行号 |
%{function} |
函数名 |
%{message} |
日志消息内容 |
高级用法
1. 条件输出
可以在占位符后添加 if 条件,例如:
qSetMessagePattern("%{time} [%{type} %{if-category}%{category}:%{endif}%{function}] %{message}");
-
如果日志有
category(如QLoggingCategory),则输出category,否则不输出。
2. 自定义颜色(终端输出)
在支持 ANSI 颜色的终端中,可以添加颜色:
qSetMessagePattern("\033[32m%{time}\033[0m \033[31m[%{type}]\033[0m %{message}");
\033[32m表示绿色,
\033[31m表示红色,\033[0m表示重置颜色。
3. 恢复默认格式
qSetMessagePattern("");// 重置为 Qt 默认格式
总结
qSetMessagePattern用于自定义 Qt 日志格式。
-
支持多种占位符(时间、文件、行号、函数、日志级别等)。
-
适用于调试、日志记录和错误追踪。
你学会了吗 ?
165

被折叠的 条评论
为什么被折叠?



