# 日志系统 **Repository Path**: qi-dunyan/logging-system ## Basic Information - **Project Name**: 日志系统 - **Description**: 基于多设计模式下的同步与异步日志系统 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2023-08-20 - **Last Updated**: 2024-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于多设计模式下的同步与异步日志系统 #### 运行环境 CentOS 7 vscode/vim g++ Makefile #### 项目介绍 写日志在日常开发中属于非常重要的一个环节,能够帮助开发人员迅速的定位出问题所在从而解决问题。本项目以此为出发点,将多种设计模式进行结合,实现一个多日志器的日志系统。该日志系统支持将日志落地到指定位置,且在进行日志实际落地时支持同步/异步两种方式。 #### 使用说明 用户仅需包含logs下的qdylog.h头文件即可,通过建造者模式构造日志器进行使用,具体使用可参考提供案例。 #### 涉及技术 - 类层次设计(继承与多态) - 生产者消费者模型 - 双缓冲区策略 - 线程安全 - 多种设计模式(工厂、代理、建造者、单例) - C++11(多线程、智能指针、auto等) #### 模块构成 - 日志等级模块:对输出的日志进行等级划分,以便于控制日志的输出。 - 日志消息模块:存储日志输出所需要的多种要素信息,如:输出等级、时间、所在文件名称/行号、信息主体等。 - 格式化日志模块:设置日志的输出格式,将日志消息进行格式化处理。 - 日志落地模块:设置日志的实际落地,如:标准输出、指定文件、滚动文件等。 - 日志器模块:对以上模块进行整合,构造出一个完整的同步/异步日志器,以简化用户的使用难度。 - 日志器管理模块:对所有的日志器进行统一管理,以便于后续通过日志器名称获取指定日志器进行使用 - 异步工作模块:实现异步线程对日志信息的实际落地,以提高工作线程的运行效率。 #### 测试结果 当前测试是在双核2G内存的云服务器上进行测试,异步日志器的测试结果有一定的影响。 ![异步日志器测试结果](bench/%E5%BC%82%E6%AD%A5%E6%97%A5%E5%BF%97%E5%99%A8%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.jpg.jpg) ![同步日志器测试结果](bench/%E5%90%8C%E6%AD%A5%E6%97%A5%E5%BF%97%E5%99%A8%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.jpg) #### 视频展示 [【C++个人项目展示—基于多设计模式下的同步&异步日志系统】](http://www.bilibili.com/video/BV1JN4y1Q792?vd_source=48da8644a74fbf216b46aedc8a72b531)