123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "mainwindow.h"
- #include <QApplication>
- #include <QFile>
- #include <QMessageLogContext>
- #include <QDebug>
- #include <QDateTime>
- #include <QDir>
- #include <QMutex>
- void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg);
- int main(int argc, char *argv[])
- {
- // 安装消息处理函数
- qInstallMessageHandler(outputMessage);
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- return a.exec();
- }
- void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
- {
- static QMutex mutex;
- mutex.lock();
- QByteArray localMsg = msg.toLocal8Bit();
- QString text;
- switch (type) {
- case QtDebugMsg:
- text = QString("Debug:");
- break;
- case QtWarningMsg:
- text = QString("Warning:");
- break;
- case QtCriticalMsg:
- text = QString("Critical:");
- break;
- case QtFatalMsg:
- text = QString("Fatal:");
- break;
- default:
- text = QString("Debug:");
- break;
- }
- // 输出信息格式
- const QString context_info = QString("File:(%1)").arg(QString(context.file));
- const QString strDataTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
- #ifdef DEBUG
- const QString strMessage = QString("[%1] [%2]\t[%3]\t[%4]").arg(text).arg(strDataTime).arg(context_info).arg(msg);
- #else
- const QString strMessage = QString("[%1] [%2]\t[%3]\t[%4]").arg(text).arg(strDataTime).arg(context_info).arg(msg);
- #endif
- // 输出信息到文件中
- const QString strFilePath = QString(QDir::toNativeSeparators(QApplication::applicationDirPath()) + QDir::toNativeSeparators("/log/"));
- const QString strFileName = QString(strFilePath + QDateTime::currentDateTime().toString("yyyy-MM-dd").append("-log.txt"));
- if(!QDir(strFilePath).exists()){
- QDir(strFilePath).mkdir(strFilePath);
- }
- QFile file(strFileName);
- file.open(QIODevice::ReadWrite | QIODevice::Append);
- QTextStream stream(&file);
- stream << strMessage << "\r\n";
- file.flush();
- file.close();
- //解锁
- mutex.unlock();
- }
|