QT4保存调试日志

windows下Qt程序发布后,所有调试日志都没有了,有时候出错不容易找出,所以做了个根据命令行传入debug后,把调试日志写到文件中的功能:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QDateTime>

static QString logfilepath = "debuglog.txt";

void customMessageHandler(QtMsgType type, const char *msg)
{
        QString txt;
        switch (type) {
        //调试信息提示
         case QtDebugMsg:
                 txt = QString("Debug: %1").arg(msg);
                 break;

         //一般的warning提示
         case QtWarningMsg:
                 txt = QString("Warning: %1").arg(msg);
         break;
         //严重错误提示
         case QtCriticalMsg:
                 txt = QString("Critical: %1").arg(msg);
         break;
         //致命错误提示
         case QtFatalMsg:
                 txt = QString("Fatal: %1").arg(msg);
                 abort();
         }
         QDateTime now = QDateTime::currentDateTime();
         QString filepath = "debuglog_" + now.toString("yyyyMMddhhmmss") + ".txt";
         QFile outFile(logfilepath);
         outFile.open(QIODevice::WriteOnly | QIODevice::Append);
         QTextStream ts(&outFile);
         ts << txt << endl;
}


int main(int argc, char *argv[])
{

    QApplication a(argc, argv);


    // 获取命令行参数
    QStringList ql = QCoreApplication::arguments ();
    // 遍历命令行参数,如果传入debug 则把qDebug等输出重定向到文件中
    foreach(QString tmp, ql)
    {
        qDebug() << "parm: " << tmp << endl;
        if (tmp == "debug")
        {
            QDateTime now = QDateTime::currentDateTime();
            logfilepath = "debuglog_" + now.toString("yyyyMMddhhmmss") + ".txt";
            //先注册自己的MsgHandleIr
            qInstallMsgHandler(customMessageHandler);
        }
    }
    //以后就可以像下面这样直接打日志到文件中,而且日志也会包含时间信息
    qDebug("This is a debug message at thisisqt.com");
    qWarning("This is a warning message  at thisisqt.com");
    qCritical("This is a critical message  at thisisqt.com");
    //qFatal("This is a fatal message at thisisqt.com");

    MainWindow w;
    w.show();
    
    return a.exec();
}
参考:

http://www.cppblog.com/lauer3912/archive/2011/04/10/143870.html

猜你喜欢

转载自blog.csdn.net/xyyangkun/article/details/51954378
qt4