# log **Repository Path**: lure_ai/log ## Basic Information - **Project Name**: log - **Description**: 基于C++ spdlog日志库的二次封装 - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 15 - **Created**: 2024-12-25 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # log #### 介绍 基于C++ spdlog日志库的二次封装
**支持以下功能** : 1. 颜色控制台输出 2. 旋转日志文件输出 (存储多个文件,循环覆盖) 3. 日期日志文件输出 (采用日期文件记录,在每天的指定时间生成一个日志文件) 4. 同步/异步输出模式 5. 配置文件加载日志库 6. 多logger输出 (ps: 可以形成多个日志文件,指定logger输出,方便多模块功能的日志记录)

#### 目录介绍 **hlog** :日志库源码+二次封装的源码
**test** :测试代码(注:需要拷贝静态库的include、lib目录过来,这两个目录由hlog目录生成)
注意:在hlog目录中,里面有用到一个json库,其作用是为了支持使用配置文件方式加载日志。如果不需要使用该方式,可以将其库去除,以及封装源码中的配置文件加载接口去除即可

#### windows下如何生成静态库 ``` 1、打开cmd.exe界面,进入hlog目录,执行下面命令 winbuild_vs2019.bat 2、命令执行完以后会在编译目录生成 include、lib目录 ```

#### linux下如何生成静态库 ``` //进入hlog目录,执行下面的命令 mkdir build cd build cmake .. make make install //该命令会在编译目录生成 include、lib 目录 ```

#### 如何在项目中使用 1、在hlog目录下使用cmake生成静态库
3、拷贝静态库的目录到你的项目中,并链接它


#### 如何使用测试目录进行测试 1、进入hlog生成静态库
2、拷贝静态库目录 include、lib 目录到test目录下
3、执行cmake编译出可执行文件
4、运行可执行文件


#### **类使用实例** ```c++ #pragma once #include "hlog.h" int main() { //控制台(软件初始化) Hlog log; log.AddColorConsole("logger1"); log.Init(); LOG_DEBUG("logger1", "test data:{}"); LOG_INFO("logger1", "test data:{}"); LOG_WARN("logger1", "test data:{}"); ////控制台(配置文件初始化) //Hlog log; //log.InitConfig(".\\log_rotating_file.json"); //LOG_DEBUG("logger1", "test data:{}"); //LOG_INFO("logger1", "test data:{}"); //LOG_WARN("logger1", "test data:{}"); ////控制台+旋转文件(软件初始化) //Hlog log; //log.AddColorConsole("logger1"); //log.AddRotatingFile("logger1", "log/test.log"); //log.Init(); //LOG_DEBUG("logger1", "test data:{}"); //LOG_INFO("logger1", "test data:{}"); //LOG_WARN("logger1", "test data:{}"); ////控制台+旋转文件(配置文件初始化) //Hlog log; //log.InitConfig(".\\log_rotating_file.json"); //LOG_DEBUG("logger1", "test data:{}"); //LOG_INFO("logger1", "test data:{}"); //LOG_WARN("logger1", "test data:{}"); ////控制台+日期文件(软件初始化) //Hlog log; //log.AddColorConsole("logger1"); //log.AddDailyFile("logger1", "log/test.log", 5, 0); //log.Init(); //LOG_DEBUG("logger1", "test data:{}"); //LOG_INFO("logger1", "test data:{}"); //LOG_WARN("logger1", "test data:{}"); ////控制台+日期文件(配置文件初始化) //log.InitConfig(".\\log_daily_file.json"); //LOG_DEBUG("logger1", "test data:{}"); //LOG_INFO("logger1", "test data:{}"); //LOG_WARN("logger1", "test data:{}"); ////多个记录器,记录器里:控制台+旋转文件(软件方式初始化) //Hlog log; //log.AddColorConsole("log1", Hlog::LEVEL_DEBUG); //log.AddRotatingFile("log1", "log/test.log", 10240000, 10, Hlog::LEVEL_DEBUG); //log.AddColorConsole("log2", Hlog::LEVEL_DEBUG); //log.AddRotatingFile("log2", "log/test.log", 10240000, 10, Hlog::LEVEL_DEBUG); //log.Init(Hlog::SYNC); //LOG_DEBUG("log1", "test data:{}"); //LOG_INFO("log1", "test data:{}"); //LOG_WARN("log1", "test data:{}"); //LOG_DEBUG("log2", "test data:{}"); //LOG_INFO("log2", "test data:{}"); //LOG_WARN("log2", "test data:{}"); ////多个记录器,记录器里:控制台+旋转文件(配置文件初始化) //Hlog log; //log.InitConfig(".\\multi_log.json"); //LOG_DEBUG("log1", "test data:{}"); //LOG_INFO("log1", "test data:{}"); //LOG_WARN("log1", "test data:{}"); //LOG_DEBUG("log2", "test data:{}"); //LOG_INFO("log2", "test data:{}"); //LOG_WARN("log2", "test data:{}"); } ```

#### 配置文件内容 ``` # 文件描述: # outputMode: 同步/异步的日志输出模式, 值: SYNC、ASYNC # outputFormat: 日志输出格式,具体格式参照官方文档 # level:输出等级,值: TRACE、DEBUG、INFO、WARN、ERROR、CRITI # type: sink类型, 值:color_console、rotating_file # # loggers: 存放所有记录器,里面每个对象都是一个记录器,记录器里面存在多个sink # logger-name: 记录器的名称 # logger-level:记录器的输出等级 # # sinks: 存放多个sink输出位置 # sink-type: sink的类型,控制台或者文件等 { "outputMode" : "SYNC", "outputFormat" : "%^[ %Y-%m-%d %H:%M:%S.%e ] [%n] [%l]\n%@,%!\n%v%$\n", "loggers" : [ { "name" : "log1", "level" : "DEBUG", "sinks" : [ { "type" : "color_console", //控制台 "level" : "INFO" }, { "type" : "rotating_file", //旋转文件 "level" : "DEBUG", "fileName": "log/test1.log", "maxFileSize" : 10240000, "maxFile" : 10 }, { "type" : "daily_file", //日期文件 "level" : "DEBUG", "fileName": "log/test.log", "hour" : 5, "minute" : 0 } ] }, { ... 同上相同,这里是另外一个logger记录器 } ] } ```