QT实时输出日志的两种方法

本文介绍了在Qt开发中如何实现在release版本中输出调试日志,包括将日志重定向到txt文件和显示在QTextEdit控件中。详细展示了代码示例,强调了调试级别的使用,并提醒在Release模式下文件和行号信息缺失的问题及解决办法。
摘要由CSDN通过智能技术生成


前言

Qt开发过程中经常需要输出调试日志,这些日志分为五个级别:qDebug、qWarning、qInfo、qCritical、qFatal。这些日志在调试过程中我们可以在开发工具的程序输出窗口查看,而实际使用的release版本脱离开发环境后则没办法显示这些信息。如果能在release版本中也将这些信息打印出来的话就可以方便后续程序维护及bug定位。

本文介绍两种方法,一种是将日志信息重定向输出到txt文件,另外一种是定向输出到界面控件QTextEdit上,并且根据日志类别控制信息显示的颜色。

`

简述

消息处理程序是一个函数,用于打印调试信息、警告信息、严重错误和致命的错误的消息。Qt库(debug模式)包含成百上千的警告信息打印,当发生内部错误时(通常是无效的函数参数)。Qt在release模式下构建还包含这些警告,除非在编译时设置QT_NO_WARNING_OUTPUT和/或QT_NO_DEBUG_OUTPUT。如果你实现自己的消息处理程序,就可以完全控制这些消息。

缺省的消息处理程序向标准输出打印消息。如果是一个致命的消息,应用程序就会立即中止。

仅可以定义一个消息处理程序,因为这通常是在应用范围的基础上进行的,以控制调试输出。

调用qInstallMessageHandler(0)可以恢复消息处理程序。

调试级别
Q包含用于警告和调试文本的全局宏:
qDebug() :调试消息
qInfo():信息消息
qWarning():警告消息和可恢复的错误
qCritical():关键错误和系统错误
qFatal():致命错误

一、输出到txt文件

代码示例:

void outputMessage2file(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
   
    static QMutex mutex;
    mutex.lock();
    QString text;
    switch(type)
    {
   
        case QtDebugMsg: text = QString("Debug:"); break;
        case QtWarningMsg: text = QString("Warning:"); break;
        case QtCriticalMsg: text = QString("Critical:"); break;
        case QtFatalMsg: text = QString("Fatal:"); break;
    }
    QString context_info = QString("File:(%1) Line:(%2)").arg(QString(context.file)).arg(context
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值