资源简介
参考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版)郝斌 数据结构课程笔记
相关资源
- SPI通信的Verilog实现 附详细说明
- 开源QT串口调试助手
- DataLogic Matrix300N 中文彩页
- ADF4350 verilog 控制源代码
- 基于Qt的window service服务封装
- systemverilog验证_克里斯。斯皮尔
- K8 weblogic-CVE-2018-2628-getshell工具
- Verilog状态机实现自动饮料售货机
- QT数据库的操作
- 用verilog实现HDB3编解码的程序
- 基于CSA原理,使用verilog实现7个数相加
- 模拟MIPS流水线处理器的verilog源代码
- 博客BLOG
- QT串口编程库--qextserialport-1.2win-alpha
- 用verilog HDL设计交通灯
- ubuntu 12.04 +Qt+opencv采集、显示视频并拍
- 用友API资讯管理器二次开发用的U8Lo
- 移动onenet 基于arduino IDE 的mqtt连接
- QT编写的局域网聊天工具仿飞秋
- ARM开发板QT编写的虚拟全键盘
- source.zip
- 基于Qt的多线程工具
- log4j日志输出格式化和日志文件名格式
- 数字信号处理库Aquila编译及使用说明
- Qt:利用ntp服务器获取网络时间
- 利用qt creator 实现的mp3的功能,有界面
- 常用低速接口verilog代码Uart/SPI/I2C等
- Qt实现周立功CAN
- logistic映射分岔图的四种实现方法
- qtwinmigrate-2.8_1-opensource
评论
共有 条评论