Files
CodeRepository/Common/Logger.cpp
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

250 lines
3.8 KiB
C++

#include "Logger.h"
#include <QDir>
#include <QApplication>
GLogger* GLogger::m_ptrLogger = nullptr;
GLogger::GLogger()
{
m_bOpen = false;
m_bWrite = true;
m_strDir = QApplication::applicationDirPath();
m_strDir += "/";
m_strName = "MyLog";
m_nIndex = 0;
m_eLogLevel = eLL_Info;
m_varDateTime = QDateTime::currentDateTime();
}
GLogger* GLogger::GetInstance()
{
if(nullptr == m_ptrLogger)
{
m_ptrLogger = new GLogger();
}
return m_ptrLogger;
}
void GLogger::FreeInstance()
{
if(nullptr != m_ptrLogger)
{
m_ptrLogger->Close();
delete m_ptrLogger;
m_ptrLogger = nullptr;
}
}
GLogger::~GLogger()
{
Close();
}
void GLogger::SetDir(const QString& strDir)
{
m_strDir = strDir;
if(*m_strDir.rbegin() != '/' && *m_strDir.rbegin() != '\\')
{
m_strDir += "/";
}
}
void GLogger::SetName(const QString& strName)
{
m_strName = strName;
}
void GLogger::SetWriteFlag(bool bWrite)
{
m_bWrite = bWrite;
}
void GLogger::SetLogLevel(eLogLevel elogLevel)
{
m_eLogLevel = elogLevel;
}
bool GLogger::Open()
{
if(!m_bWrite)
{
return false;
}
Close();
QDir varDir;
bool bRs = false;
if(!varDir.exists(m_strDir) )
{
bRs = varDir.mkpath(m_strDir);
}
else
{
bRs = true;
}
if(!bRs)
{
return false;
}
m_varDateTime = QDateTime::currentDateTime();
QString strFileName = m_strDir + m_strName + "_" + m_varDateTime.toString("yyyyMMdd") + QString(".%1").arg(m_nIndex+1) + ".log";
m_varFile.setFileName(strFileName);
if(!m_varFile.open(QIODevice::WriteOnly | QIODevice::Append) )
{
return false;
}
m_bOpen = true;
return true;
}
void GLogger::Close()
{
if(m_bOpen)
{
m_varFile.flush();
m_varFile.close();
m_bOpen = false;
}
}
bool GLogger::WriteMsg(const QString& strMsg)
{
m_mutexLocker.lock();
if(!m_bWrite)
{
m_mutexLocker.unlock();
return true;
}
if(!m_bOpen)
{
if(!Open() )
{
m_mutexLocker.unlock();
return false;
}
}
if(IsNewDay() )
{
Close();
m_nIndex = 0;
Open();
}
QDateTime varCurDateTime = QDateTime::currentDateTime();
QString strLogMsg = QString("[%1]\t%2\r\n")
.arg(varCurDateTime.toString("hh:mm:ss.zzz") )
.arg(strMsg);
m_varFile.write(strLogMsg.toStdString().c_str());
m_varFile.flush();
//
if(m_varFile.size() > 10*1024*1024)
{
m_nIndex++;
Close();
Open();
}
m_mutexLocker.unlock();
return true;
}
bool GLogger::WriteDebug(const QString& strMsg)
{
if(m_eLogLevel > eLL_Debug)
{
return false;
}
QString strLogMsg = "debug: " + strMsg;
WriteMsg(strLogMsg);
return true;
}
bool GLogger::WriteInfo(const QString& strMsg)
{
if(m_eLogLevel > eLL_Info)
{
return false;
}
QString strLogMsg = "info: " + strMsg;
WriteMsg(strLogMsg);
return true;
}
bool GLogger::WriteWaring(const QString& strMsg)
{
if(m_eLogLevel > eLL_Warning)
{
return false;
}
QString strLogMsg = "warning: " + strMsg;
WriteMsg(strLogMsg);
return true;
}
bool GLogger::WriteError(const QString& strMsg)
{
if(m_eLogLevel > eLL_Error)
{
return false;
}
QString strLogMsg = "error: " + strMsg;
WriteMsg(strLogMsg);
return true;
}
bool GLogger::IsNewDay()
{
QDateTime varCurDate = QDateTime::currentDateTime();
if(0 == varCurDate.toString("yyyyMMdd").compare(m_varDateTime.toString("yyyyMMdd") ) )
{
return false;
}
return true;
}