#ifndef MyLOG_H
#define MyLOG_H
#include <QObject>
#include <QFile>
#include <QTextStream>
#include "qdebug.h"
#include "qmutex.h"
#include "qdatetime.h"
QMutex logmutex;
QFile file;
QDateTime dateTime;
#endif // MyLOG_H
#include "Mylog.h"
void openlogfile(QString fileName)
{
file.setFileName(fileName);
file.open(QIODevice::WriteOnly | QIODevice::Append);
if (!file.isOpen())
{
qDebug() << "打开日志失败";
}
}
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
logmutex.lock();
QDateTime dateTime(QDateTime::currentDateTime());
QString timeStr(dateTime.toString("dd-MM-yyyy HH:mm:ss:zzz"));
QString contextString(QString(" (%1, %2) ").arg(context.file).arg(context.line));
QTextStream stream(&file);
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
stream << timeStr << " Debug: " << contextString << localMsg.constData() << "\r\n";
break;
case QtInfoMsg:
stream << timeStr << " Info: " << contextString << localMsg.constData() << "\r\n";
break;
case QtWarningMsg:
stream << timeStr << " Warning: " << contextString << localMsg.constData() << "\r\n";
break;
case QtCriticalMsg:
stream << timeStr << " Critical: " << contextString << localMsg.constData() << "\r\n";
break;
case QtFatalMsg:
stream << timeStr << " Fatal: " << contextString << localMsg.constData() << "\r\n";
break;
}
logmutex.unlock();
}
extern void openlogfile(QString fileName);
extern void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg);
int main(int argc, char *argv[])
{
openlogfile("log_info.txt");
qInstallMessageHandler(myMessageOutput); // Install the handler
}