1. 程式人生 > >[Qt] 日誌輸出到檔案(qDebug\qWarning\qCritical\qFatal)

[Qt] 日誌輸出到檔案(qDebug\qWarning\qCritical\qFatal)

#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();
  }