QT6.5日志调试qml和c++对比

日志相关代码

//qml

    console.log();//输出调试信息
    console.info();//输出信息级别的日志
    console.warn();//输出警告信息
    console.error();//输出警告信息
    console.debug();//输出调试信息

在main.cpp里面加如下:    
    //c++

#include <QDebug>
    QDebug()<<"这是调试信息";
    qInfo()<<"这是一般信息";
    qWarning()<<"这是警告信息";
    qCritical()<<"这是严重错误信息";
    qFatal()<<"这致命错误信息";//会导致程序终止

加资源文件和代码文件

在CMakeLists.txt里面,加资源文件(SOURCE)和代码文件(RESOURCE)找到qt-add-qml-module里面的QML_FILES加

格式:SOURCE或者RESOURCE 资源文件路径用/,如果用\会被识别为转义字符 

直接干崩溃了,好吧直接学一步步调试 

 找到了,不需要调试了,把下面这个qFatal()注释掉就行

 生成日志

 无人监管的情况下将日志存储至文件----方便开发人员进行离线分析->需要自行编写对应的代码实现。我照着写的,运行不了,又改了一些

#include <QDebug>
#include <QFile>
#include <QDateTime>

#include <QTextStream>
#include <QGuiApplication>
void customMessageHandler(QtMsgType type,const QMessageLogContext &context,const QString &msg)
{

    //打开日志文件
    QFile file("log.txt");
    file.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream out(&file);

    //获取当前时间作为日志时间戳
    QString dateTime=QDateTime::currentDateTime().toString("yyyy-mm-dd-hh:mm:ss");
    QString txtMessage;

    //根据不同的消息类型,设置不同的前缀
    switch (type) {
    case QtDebugMsg:
        txtMessage=QString("%1 - Debug: %2").arg(dateTime, msg);
        break;
    case QtInfoMsg:
        txtMessage=QString("%1 - Info: %2").arg(dateTime, msg);
        break;
    case QtWarningMsg:
        txtMessage=QString("%1 - Warning: %2").arg(dateTime, msg);
        break;
    case QtCriticalMsg:
        txtMessage=QString("%1 - Critical: %2").arg(dateTime, msg);
        break;
    case QtFatalMsg:
        txtMessage=QString("%1 - Fatal: %2").arg(dateTime, msg);
        abort();//终止程序
    }
    out << txtMessage << "\n";
    //out<<txtMessage<<std::endl;
    //清空和关闭文件(如果需要的话)
    file.flush();
    file.close();

    //同时输出到终端
    fprintf(stdout,"%s\n",txtMessage.toLocal8Bit().constData());
    fflush(stdout);
}
int main()
//int main(int argc,char *argv[])写这个总报错,我明明写的main,偏说我写qmain
{
    qInstallMessageHandler(customMessageHandler);
    qDebug()<<"这是调试信息";
    qInfo()<<"这是一般的信息";
    qWarning()<<"这是警告信息";
    qCritical()<<"这是严重错误信息";
    QGuiApplication app(int argc,char *argv);
    return 0;
}

得到这样的结果,还好,至少可以执行成功了 

解释一下:customMessageHandler是自定义的日志输出函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值