QTDebug 魔改

2 篇文章 0 订阅
#include <QStyleFactory>
#include <QDateTime>
#include <iostream>
#include <QFile>
#include <QTextStream>
#include <QDebug>
using namespace std;
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)

void customMessageHandler(QtMsgType type, const QMessageLogContext &, const QString &str) {
    const QString &txt = str;
#else
    void customMessageHandler(QtMsgType type, const char *msg)
{
    QString txt(msg);
#endif
    //输出到控制台
    QDateTime now = QDateTime::currentDateTime();
    QString _time = now.toString("yyyy-MM-dd hh:mm:ss.zzz");
    QString fileName = now.toString("yyyy-MM-dd") + "debug.log";
    QFile outFile(fileName);
    outFile.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream ts(&outFile);
    ts.setCodec("UTF-8");
    ts.setGenerateByteOrderMark(false);
    ts << _time << "   " << txt << endl;
    outFile.close();
    //enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg };
    switch (type) {
        case QtDebugMsg:
            cout << _time.toLatin1().data() << " Debug " << txt.toLocal8Bit().data() << endl;
            break;
        case QtWarningMsg:
            cout << _time.toLatin1().data() << " Warning " << txt.toLocal8Bit().data() << endl;
            break;
        case QtCriticalMsg:
            cout << _time.toLatin1().data() << " Critical " << txt.toLocal8Bit().data() << endl;
            break;
        case QtFatalMsg:
            cout << _time.toLatin1().data() << " Fatal " << txt.toLocal8Bit().data() << endl;
            break;
        case QtInfoMsg:
            cout << _time.toLatin1().data() << " Info " << txt.toLocal8Bit().data() << endl;
            break;
    }

}

main函数进行注册

#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
    qInstallMessageHandler(customMessageHandler);
#else
    qInstallMsgHandler(customMessageHandler);
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值