[Qt] 日志输出到文件(qDebug\qWarning\qCritical\qFatal)

完整QML视频教程:http://i.xue.taobao.com/detail.htm?courseId=113958

#ifndef LOGFILE_H
#define LOGFILE_H

#include <QMutex>
#include <QFile>
#include <QTextStream>
#include <QDateTime>

static QMutex mutex;

void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QFile file("log.txt");

    if (!file.open(QIODevice::WriteOnly | QIODevice::Append))
        return ;

    mutex.lock();

    QString text;
    text = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");

    switch(type) {
    case QtDebugMsg:
        text += " Debug: ";
        break;
    case QtWarningMsg:
        text += " Warning: ";
        break;
    case QtCriticalMsg:
        text += " Critical: ";
        break;
    case QtFatalMsg:
        text += " Fatal: ";
        text += QString("File(%1) Line(%2) ").arg(context.file).arg(context.line);
        break;
    default:
        break;
    }

    QTextStream stream(&file);
    stream << text << msg << "\n";

    file.flush();
    file.close();

    mutex.unlock();
}

#endif // LOGFILE_H

  int main(int argc, char **argv)
  {
      qInstallMessageHandler(myMessageOutput);
      QApplication app(argc, argv);
      ...
      return app.exec();
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值