zoukankan      html  css  js  c++  java
  • Qt 之 qInstallMessageHandler(日志重定向至文件)

    Qt 日志重定向到文件

    #include <QCoreApplication>
    #include <QDebug>
    #include <QMutex>
    #include <QFile>
    #include <QApplication>
    #include <QString>
    #include <QDateTime>
    
    void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
        // 加锁
        static QMutex mutex;
        mutex.lock();
    
        QByteArray localMsg = msg.toLocal8Bit();
    
        QString strMsg("");
        switch(type)
        {
        case QtDebugMsg:
            strMsg = QString("Debug:");
            break;
        case QtWarningMsg:
            strMsg = QString("Warning:");
            break;
        case QtCriticalMsg:
            strMsg = QString("Critical:");
            break;
        case QtFatalMsg:
            strMsg = QString("Fatal:");
            break;
        }
    
        // 设置输出信息格式
        QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ");
        QString strMessage = QString("%1 %2:%3  %4 : %5")
                .arg(strDateTime).arg(context.file).arg(context.line)
                .arg(context.function).arg(strMsg + localMsg.constData());
    
        // 输出信息至文件中(读写、追加形式)
        QString strDateTime1 = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss");
        static QString fileName = QString("test"+strDateTime1+".log");
        QFile file(fileName);
        file.open(QIODevice::ReadWrite | QIODevice::Append);
        QTextStream stream(&file);
        stream << strMessage << "
    ";
        file.flush();
        file.close();
    
        // 解锁
        mutex.unlock();
    }
    
    void fun()
    {
        qDebug("This is a debug message");
        qWarning("This is a warning message");
        qCritical("This is a critical message");
    }
    
    int main(int argc, char **argv)
    {
        // 安装消息处理程序
        qInstallMessageHandler(myMessageOutput);
    
        QApplication app(argc, argv);
    
        // 打印信息
        qDebug("This is a debug message.");
        qWarning("This is a warning message.");
        qCritical("This is a critical message.");
    //    qFatal("This is a fatal message.");
        fun();
    
        return app.exec();
    }

    原文  https://blog.csdn.net/liang19890820/article/details/51838379

  • 相关阅读:
    SpringMVC @PathVariable注解
    Spring REST
    SpringMVC @RequestMapping注解详解
    SpringMVC入门示例
    分布式系统中的幂等性
    常见性能优化策略的总结
    算法(Algorithms)第4版 练习 2.2.5
    算法(Algorithms)第4版 练习 2.2.23
    算法(Algorithms)第4版 练习 2.2.11(最终)
    算法(Algorithms)第4版 练习 2.2.11(3)
  • 原文地址:https://www.cnblogs.com/nanqiang/p/10929589.html
Copyright © 2011-2022 走看看