1 #include <QCoreApplication>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <QFile>
5 #include <QMutex>
6 #include <qdebug.h>
7 #include <QDateTime>
8 #include <iostream>
9 using namespace std;
10
11 void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
12 {
13 static QMutex mutex;
14 mutex.lock();
15 QString text;
16 bool flag = false;
17 switch(type)
18 {
19 case QtDebugMsg://qDebug
20 flag = true;
21 break;
22 case QtInfoMsg://qInfo
23 text = QString(":");
24 break;
25 case QtWarningMsg://qWarning
26 text = QString(":");
27 break;
28 case QtCriticalMsg://qCritical
29 text = QString(":");
30 break;
31 case QtFatalMsg://qFatal
32 text = QString(":");
33 abort();
34 }
35 if (flag)
36 {
37 #ifdef QT_NO_DEBUG
38 cout << msg.toStdString() << endl;
39 #else
40 cout << msg.toStdString() << "," << context.file << "," << context.line << "," << context.function << endl;
41 #endif
42 }
43 else
44 {
45 QString message = QString("[%1] %2 %3").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd")).arg(text).arg(msg);
46 QFile file(QString("log.txt"));
47 file.open(QIODevice::WriteOnly | QIODevice::Append);
48 QTextStream text_stream(&file);
49 text_stream << message << endl;
50 file.flush();
51 file.close();
52 }
53 mutex.unlock();
54 }
55
56 int main(int argc, char **argv)
57 {
58 qInstallMessageHandler(myMessageOutput);
59 QCoreApplication app(argc, argv);
60 //测试
61 qInfo() << "122";
62 qInfo() << "12342";
63 qInfo() << "1243222";
64 qInfo() << "12322";
65 qDebug() << "aabc";
66 qDebug() << "abadrc";
67 qDebug() << "abzac";
68 qDebug() << "abaqc";
69 qDebug() << "abac";
70 return app.exec();
71 }