QT4保存调试日志

来源:互联网 发布:知豆新能源资质 编辑:程序博客网 时间:2024/06/05 07:14

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

0 0