QT中的qSetMessagePattern

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}

应用程序名称 (QCoreApplication::applicationName())

%{type}

日志级别(debuginfowarningcriticalfatal

%{time}

日志时间(默认格式 hh:mm:ss.zzz

%{time [format]}

自定义时间格式(如 %{time yyyy-MM-dd hh:mm:ss}

%{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 日志格式。

  • 支持多种占位符(时间、文件、行号、函数、日志级别等)。

  • 适用于调试、日志记录和错误追踪。 

你学会了吗 ?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值