1.在项目里面添加类Log
右击项目添加新类,
填好类名直接确定就行
2.填充.h文件
#ifndef QLOGGER_H
#define QLOGGER_H
#include <qstring.h>
class QLogger
{
private:
QLogger();
QString m_msg;
public:
static QLogger* GetInstance();
static QLogger* m_Instance;
QString GetMsg();
void setMsg(const QString& msg);
};
#endif // QLOGGER_H
3.填充.c文件
#include "qlogger.h"
#include <QApplication>
#include <qdatetime.h>
#include <QTextStream>
#include <QFile>
#include <QDate>
QLogger* QLogger::m_Instance = NULL;
void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
QByteArray localMsg = msg.toLocal8Bit();
QDateTime current_date_time = QDateTime::currentDateTime();
QString currentTime = current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
QString temp;
switch (type) {
case QtDebugMsg:
temp = "[" + currentTime + "]" + " [Debug]" + msg;
break;
case QtInfoMsg:
temp = "[" + currentTime + "]" + " [Info]" + msg;
break;
case QtWarningMsg:
temp = "[" + currentTime + "]" + " [Warning]" + msg;
break;
case QtCriticalMsg:
temp = "[" + currentTime + "]" + " [Critical]" + msg;
break;
case QtFatalMsg:
temp = "[" + currentTime + "]" + " [Fatal]" + msg;
break;
}
temp += " [Function]" + QString(context.function) + " :" + QString::number(context.line);
fprintf(stderr, temp.toLocal8Bit());
QLogger::GetInstance()->setMsg(temp);
QFile file(QDate::currentDate().toString() + "log.txt");
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream text_stream(&file);
text_stream << temp << "\r\n";
file.flush();
file.close();
}
QLogger::QLogger()
{
qInstallMessageHandler(myMessageOutput);
}
void QLogger::setMsg(const QString& msg)
{
m_msg = msg;
}
QLogger* QLogger::GetInstance()
{
if (m_Instance == NULL) {
m_Instance = new QLogger();
}
return m_Instance;
}
QString QLogger::GetMsg()
{
return m_msg;
}