feat: 添加ElaWidgetTool库
This commit is contained in:
103
ElaWidgetTools/private/ElaLogPrivate.cpp
Normal file
103
ElaWidgetTools/private/ElaLogPrivate.cpp
Normal file
@@ -0,0 +1,103 @@
|
||||
#include "ElaLogPrivate.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QMutex>
|
||||
#ifndef QT_NO_DEBUG
|
||||
#include <iostream>
|
||||
#endif
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <QTextStream>
|
||||
#endif
|
||||
#include "ElaLog.h"
|
||||
Q_GLOBAL_STATIC(QMutex, messageLogMutex)
|
||||
Q_GLOBAL_STATIC(QString, logFileNameTime)
|
||||
ElaLogPrivate::ElaLogPrivate(QObject* parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
}
|
||||
|
||||
ElaLogPrivate::~ElaLogPrivate()
|
||||
{
|
||||
}
|
||||
|
||||
void ElaLogPrivate::_messageLogHander(QtMsgType type, const QMessageLogContext& ctx, const QString& msg)
|
||||
{
|
||||
if (type > QtCriticalMsg)
|
||||
{
|
||||
return;
|
||||
}
|
||||
QString logInfo;
|
||||
QString logTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
|
||||
switch (type)
|
||||
{
|
||||
case QtDebugMsg:
|
||||
{
|
||||
logInfo = QString("[信息-%1](函数: %2 , 行数: %3) -> %4").arg(logTime, ctx.function, QString::number(ctx.line), msg);
|
||||
break;
|
||||
}
|
||||
case QtWarningMsg:
|
||||
{
|
||||
logInfo = QString("[警告-%1](函数: %2 , 行数: %3) -> %4").arg(logTime, ctx.function, QString::number(ctx.line), msg);
|
||||
break;
|
||||
}
|
||||
case QtCriticalMsg:
|
||||
{
|
||||
logInfo = QString("[错误-%1](函数: %2 , 行数: %3) -> %4").arg(logTime, ctx.function, QString::number(ctx.line), msg);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
qCritical("发生致命错误!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
qDebug() << logInfo;
|
||||
ElaLog* log = ElaLog::getInstance();
|
||||
Q_EMIT log->logMessage(logInfo);
|
||||
messageLogMutex->lock();
|
||||
QFile logfile;
|
||||
if (log->getIsLogFileNameWithTime())
|
||||
{
|
||||
logfile.setFileName(log->getLogSavePath() + "\\" + log->getLogFileName() + *logFileNameTime + ".txt");
|
||||
}
|
||||
else
|
||||
{
|
||||
logfile.setFileName(log->getLogSavePath() + "\\" + log->getLogFileName() + ".txt");
|
||||
}
|
||||
if (logfile.open(QIODevice::WriteOnly | QIODevice::Append))
|
||||
{
|
||||
QTextStream logFileStream(&logfile);
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
||||
logFileStream << logInfo << Qt::endl;
|
||||
#else
|
||||
logFileStream << logInfo << endl;
|
||||
#endif
|
||||
logfile.close();
|
||||
}
|
||||
messageLogMutex->unlock();
|
||||
}
|
||||
|
||||
void ElaLogPrivate::_clearLogFile()
|
||||
{
|
||||
if (_pIsLogFileNameWithTime)
|
||||
{
|
||||
QString logTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh-mm-ss");
|
||||
logTime.prepend("_");
|
||||
logTime.replace(" ", "_");
|
||||
logFileNameTime->clear();
|
||||
logFileNameTime->append(logTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
QFile file(_pLogSavePath + "\\" + _pLogFileName + ".txt");
|
||||
if (file.exists())
|
||||
{
|
||||
if (file.open(QIODevice::WriteOnly | QIODevice::Text | QFile::Truncate))
|
||||
{
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user