資源簡介
參考https://blog.csdn.net/linkedin_38454662/article/details/72921025異步LOG實現原理用qt實現的簡單異步寫日志文件

代碼片段和文件信息
#include?“LogSys.h“
#include?
#include?
LogSys?*LogSys::_pInstance?=?NULL;
QMutex?LogSys::_mutex;
QMutex?LogSys::_queueMutex;
LogSys::LogSys()
{
}
LogSys?*LogSys::getInstance()
{
????if?(NULL?==?_pInstance)?{
????????QMutexLocker?locker(&_mutex);?//?雙檢測
????????if?(NULL?==?_pInstance)?{
????????????_pInstance?=?new?LogSys;
????????}
????}
????return?_pInstance;
}
void?LogSys::addLogD(const?char?*format?...)
{
????QString?logStr?=?“[D]“;
????logStr?+=?getLogExtInfo();
//????logStr?+=?format;
????va_list?argList;
????va_start(argList?format);
????QString?argStr;
????argStr.vsprintf(format?argList);
????va_end(argList);
????logStr?+=?argStr;
????logStr?+=?“\n“;
????QMutexLocker?locker(&_queueMutex);
????_logQueue.push_back(logStr);
}
void?LogSys::addLogW(const?char?*format?...)
{
????QString?logStr?=?“[W]“;
????logStr?+=?getLogExtInfo();
//????logStr?+=?format;
????va_list?argList;
????va_start(argList?format);
????QString?argStr;
????argStr.vsprintf(format?argList);
????va_end(argList);
????logStr?+=?argStr;
????logStr?+=?“\n“;
????QMutexLocker?locker(&_queueMutex);
????_logQueue.push_back(logStr);
}
void?LogSys::addLogE(const?char?*format?...)
{
????QString?logStr?=?“[E]“;
????logStr?+=?getLogExtInfo();
//????logStr?+=?format;
????va_list?argList;
????va_start(argList?format);
????QString?argStr;
????argStr.vsprintf(format?argList);
????va_end(argList);
????logStr?+=?argStr;
????logStr?+=?“\n“;
????QMutexLocker?locker(&_queueMutex);
????_logQueue.push_back(logStr);
}
void?LogSys::addLogI(const?char?*format?...)
{
????QString?logStr?=?“[I]“;
????logStr?+=?getLogExtInfo();
//????logStr?+=?format;
????va_list?argList;
????va_start(argList?format);
????QString?argStr;
????argStr.vsprintf(format?argList);
????va_end(argList);
????logStr?+=?argStr;
????logStr?+=?“\n“;
????QMutexLocker?locker(&_queueMutex);
????_logQueue.push_back(logStr);
}
QString?LogSys::getLogPop()
{
????if?(_logQueue.isEmpty())
????????return?““;
????QString?ret?=?_logQueue.front();
????QMutexLocker?locker(&_queueMutex);
????_logQueue.pop_front();
????return?ret;
}
QString?LogSys::getLogExtInfo()
{
????QString?timeStr?=?QDateTime::currentDateTime().toString(“[yyyy-MM-dd?hh:mm:ss]“);
????return?timeStr;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-07?17:46??LogSys\
?????文件?????????359??2019-01-07?14:02??LogSys\LogApi.h
?????文件????????2383??2019-01-07?17:46??LogSys\LogSys.cpp
?????文件?????????625??2019-01-07?14:00??LogSys\LogSys.h
?????文件?????????146??2019-01-07?12:52??LogSys\LogSys.pri
?????文件?????????982??2019-01-07?16:28??LogSys\LogThread.cpp
?????文件?????????407??2019-01-07?13:40??LogSys\LogThread.h
- 上一篇:GRACE水儲量解算與濾波程序代碼-杜勁松
- 下一篇:(C版)郝斌 數據結構課程筆記
評論
共有 條評論