• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: qt  log  日志  异步  文件  

资源简介

参考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

评论

共有 条评论