2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
250 lines
3.8 KiB
C++
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;
|
|
}
|
|
|