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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值