# 多设计模式下的同步和异步日志系统
**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. 然后的使用说明请参照方法一