Log.h
// log.h
#ifndef LOG_H
#define LOG_H
class Log
{
public:
Log();
~Log();
private:
};
#endif // LOG_H
Log.cpp
// log.cpp
#include "log.h"
#include <QTextStream>
#include <QFile>
#include <QDir>
#include <QDateTime>
void customMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg);
Log::Log()
{
// 清空日志文件
QFile logFile("Log/administrators-log.txt");
if (logFile.exists()) {
logFile.remove();
}
qInstallMessageHandler(customMessageHandler);
}
Log::~Log()
{
}
void customMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
// 获取当前日期时间
QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
// 构建日志信息
QString logMessage = QString("[%1] ").arg(currentDateTime);
switch (type) {
case QtDebugMsg:
logMessage += QString("Debug: %1").arg(msg);
break;
case QtWarningMsg:
logMessage += QString("Warning: %1").arg(msg);
break;
case QtCriticalMsg:
logMessage += QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
logMessage += QString("Fatal: %1").arg(msg);
break;
}
QDir path;
if (!path.exists("Log")) {
path.mkdir("Log");
}
// 写入日志文件
QFile logFile("Log/administrators-log.txt");
if (logFile.open(QIODevice::WriteOnly | QIODevice::Append)) {
QTextStream textStream(&logFile);
textStream << logMessage << endl;
logFile.close();
}
}
使用时只需要在想要输出日志的类的构造函数里加一句Log log;
,后续的qDebug的内容就可以都输入到日志文件中了