Qt5生成log文件

在arm板上运行qt程序的时候,调试方法除了生成core文件,gdb和串口调试外还可以通过查看输出日志文件定位bug,这样省去了接串口和操作gdb的麻烦,如果代码中有充分的log输出,通过log信息定位bug是相对简单快速的方法,下面简单介绍qt如何生成log文件

  • 注册消息函数

    在main函数创建窗口之前注册消息函数:
    注册消息后,代码中的log信息(如qDebug(),qWarning()等)会输出到相应log文件
    例:

    qInstallMessageHandler(logMessage);
    
  • 消息函数体
    其中msgType为消息类型,其值可以为:QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg其中之一,msgContext为消息附带信息,可以用于定位触发消息的位置,msgText为消息体,即具体的消息内容
    例:输出log文件mssageLog.txt

    void logMessage(QtMsgType msgType, const QMessageLogContext &msgContext, const QString &msgText)
    {
        static QMutex mutex;
        mutex.lock();
        //组建消息log
        QString res_msg = QString("%1 %2:%3 type %4: %5")\
                .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"))\
                .arg((QString(msgContext.file).split("/")).last())\
                .arg(msgContext.line)\
                .arg(msgType)\
                .arg(msgText);
        QFile logfile("mssageLog.txt");
        logfile.open(QIODevice::WriteOnly | QIODevice::Append);
        QTextStream logStream(&logfile);
        logStream<<res_msg<<"\r\n";
    
        logfile.flush();
        logfile.close();
        mutex.unlock();
    }
    
  • 测试输出log文件

    //log测试
    qDebug("This is a debug message");
    qWarning("This is a warning message");
    
  • 测试结果
    在这里插入图片描述
    注:对于release版本在pro文件中加上:DEFINES += QT_MESSAGELOGCONTEXT

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值