# 日志系统项目 **Repository Path**: moeqwer/log-system-project ## Basic Information - **Project Name**: 日志系统项目 - **Description**: 用来存放日志系统项目代码 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-21 - **Last Updated**: 2026-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高性能 C++ 异步日志系统 > 如果这个项目对你有帮助,欢迎 Star 支持! --- ## 项目简介 本项目是一个基于 **C++ 实现的高性能日志系统**,支持**同步 / 异步双模式、多级别日志过滤以及多目标输出(控制台 / 文件 / 滚动文件)**。 针对多线程环境下日志系统常见的**锁竞争严重、I/O 阻塞影响性能**等问题,项目通过引入**双缓冲队列 + 后台线程模型**,实现日志生产与日志写入的解耦,显著提升系统吞吐能力与响应性能。 --- ## 系统架构 ```id="e6a8w9" 业务线程(多线程产生日志) ↓ 日志接口(宏 + 可变参模板) ↓ 日志器(Logger) ↓ 双缓冲队列(Buffer A / Buffer B) ↓ 后台线程(异步消费) ↓ 输出模块(控制台 / 文件 / 滚动文件) ``` --- ## 核心功能 * **同步 / 异步日志模式** * 同步模式:适用于调试场景 * 异步模式:高性能场景下推荐 * **多级别日志过滤** * DEBUG / INFO / WARN / ERROR / FATAL * 支持按级别过滤输出 * **多输出目标** * 控制台输出 * 文件输出 * 滚动文件(按大小或时间切分) * **线程安全** * 支持多线程并发写日志 * **高性能日志写入** * 双缓冲机制降低锁竞争 * 后台线程批量写入 I/O --- ## 技术亮点 ### 1. 双缓冲 + 异步写入模型(核心亮点) * 设计 **Buffer A / Buffer B 双缓冲结构** * 前端线程只负责写入缓冲区,避免直接 I/O * 后台线程定期交换缓冲区并批量写入磁盘 * **实现日志生产与 I/O 解耦,大幅降低锁竞争** --- ### 2. 高并发优化 * 使用最小化加锁策略(仅缓冲区交换时加锁) * 批量写入日志,减少系统调用次数 * 提升整体吞吐能力 --- ### 3. 模块化架构设计 * 解耦各核心模块: * Logger(日志器) * Formatter(格式化) * Sink(输出目标) * 支持灵活扩展(如新增网络日志输出) --- ### 4. 设计模式应用 * **单例模式(Singleton)** * 管理全局日志器,保证唯一性 * **建造者模式(Builder)** * 封装日志器初始化流程 * 支持链式配置(提升易用性) --- ### 5. 类型安全日志接口 * 使用 **可变参模板(Variadic Template)** * 结合 `__FILE__`、`__LINE__` 宏记录上下文信息 * 👉 提供类似流式的安全日志接口 --- ## 技术栈 * 开发语言:C++ * 开发环境:CentOS 8 * 开发工具:VSCode / Vim / GDB * 构建工具:Makefile --- ## 项目结构 ```id="6z2b2s" . ├── README.md ├── src/ # 核心实现 ├── include/ # 头文件 ├── test/ # 测试代码 ├── logs/ # 日志输出目录 ├── Makefile ``` --- ## 快速运行 ### 编译项目 ```bash id="9rz1sh" make ``` ### 运行示例程序 ```bash id="g8f3oq" ./log_test ``` --- ## 测试说明 * 多线程日志写入测试 * 同步 / 异步性能对比 * 日志文件滚动测试 --- ## 性能优化 * 双缓冲减少锁竞争 * 批量写入减少 I/O 次数 * 异步线程提升吞吐量 在高并发场景下,相比同步日志系统性能显著提升 --- ## 项目收获 * 深入理解高并发系统中的性能瓶颈(锁竞争 / I/O 阻塞) * 掌握异步编程模型与生产者-消费者模式 * 提升 C++ 模板编程与工程设计能力 * 熟悉常见设计模式在实际工程中的应用 ---