# 多设计模式下的同步和异步日志系统 **Repository Path**: quilling/item ## Basic Information - **Project Name**: 多设计模式下的同步和异步日志系统 - **Description**: 本项目开发了一个适用于多线程并发环境的日志系统,使得开发人员能够实时获得程序的运行状态,当程序故障时,也能帮助开发人员准确快速地进行故障排查和代码调试,提升了业务项目的稳定性以及可维护性。 - **Primary Language**: C/C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-16 - **Last Updated**: 2024-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于多设计模式下的同步和异步日志系统 ## 项目相关介绍 项目介绍博客链接:
https://blog.csdn.net/qq_65207641/article/details/136221779?spm=1001.2014.3001.5501 ### 1、功能 本项目主要实现一个日志系统,其主要支持以下功能: - 支持多级别日志消息 - 支持「**同步**」日志和「**异步**」日志 - 支持**多线程**程序并发写日志 - 支持**多种落地方向**,如:写入日志到控制台、指定文件以及滚动文件(按文件大小进行滚动)中 - 支持扩展不同的日志落地方向 ### 2、开发环境 - CentOS/Ubuntu (其他操作系统还没有经过测试) - 需要编译器支持C++11 ### 3、核心技术 - 类层次设计(继承和多态的使用) - C++11(多线程、auto、智能指针、右值引用等) - 双缓冲区 - 生产消费模型 - 多线程 - 设计模式(单例、工厂、代理、建造者等) ### 4、库的使用说明 有两种方式可以使用: - 方法一:直接使用
仓库中`include`目录中含有本库所需要的所有头文件,`lib`目录,含有该日志库的动态库,
我们在代码中使用时需要包含`include/`目录下的`log.h`头文件,
在编译链接时,链接`lib`目录中的`libmylog.so`或者`libmylog.a`文件。 - 方法二:手动编译使用 1. 先克隆本仓库到本地 2. 删除`lib`中的所有文件 ``` cd lib rm -f * cd .. ``` 3. 然后在本仓库中建立一个`build`文件夹 ```bash mkdir build ``` 4. 然后进入`build`文件夹下 ```bash cd build ``` 5. 然后执行`cmake`命令 ```bash cmake .. # 如果要生成静态库,执行下面的命令 cmake .. -DBUILD_SHARED_LIBS=OFF ``` 6. 然后会在`build`目录下看到一个叫`Makefile`的文件,然后我们执行下面的命令 ```bash cmake --build . ``` 7. 执行完毕以后我们就会发现`lib`目录下生成了`libmylog.so` 动态库或者`libmylog.a`的静态库了 8. 然后的使用说明请参照方法一