seeker logger 并不是一个log库,而是一个 spdlog 库的简单封装和用法约定,以达到使用方便和代码统一的目的;
- 将本工程include下的以下h文件拷贝到到你工程的include路径中
- seeker/logger.h
- seeker/loggerApi.h
- spdlog
- main函数所在文件
- 添加
#include "seeker/logger.h" - 在main函数中,尽可能早的对logger进行初始化:
seeker::Logger::init();
- 添加
- 所有需要使用log功能的文件
- 将
#include "config.h"作为第一个引入 - 添加
#include "seeker/loggerApi.h"
- 将
- 用如下写法来打印日志
T_LOG("got message, type={}", msg.type ); //打印Trace级别日志,最低级别
D_LOG("request count={}", count); //打印Debug级别日志
I_LOG("user[{}] login at {}", userName, time); //打印Info级别日志
W_LOG("Request Error: [{}] {} stateCode: {}", req.method, req.path, res.status); //打印Warning级别日志
E_LOG("CPU error stateCode: {}", code); //打印Error级别日志,最高级别
- 日志文件名,默认为
application.log - 通过指定
LOG_FILE_NAME宏的值,来自定义日志文件名 - 注意,定义这个宏的时候,宏的值需要有双引号,例如:
#define LOG_FILE_NAME "mylogfile.log"
- 默认的日志输出级别为 INFO
- 通过指定
SPDLOG_ACTIVE_LEVEL宏的值,来修改日志输出级别 SPDLOG_ACTIVE_LEVEL宏的有效值为:SPDLOG_LEVEL_TRACESPDLOG_LEVEL_DEBUGSPDLOG_LEVEL_INFOSPDLOG_LEVEL_WARNSPDLOG_LEVEL_ERRORSPDLOG_LEVEL_CRITICALSPDLOG_LEVEL_OFF
- config.h.in里添加配置
#cmakedefine SPDLOG_ACTIVE_LEVEL @SPDLOG_ACTIVE_LEVEL@
#cmakedefine LOG_FILE_NAME "@LOG_FILE_NAME@"
- CMakeLists.txt进行配置
set(LOG_FILE_NAME "application.log")
set(SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE)
这个配置要放在configure_file(config.h.in config.h) 之前
#define LOG_USE_ASYN通过定义这个宏,来启动独立线程打印日志#define LOG_THREAD_COUNT 2通这个宏,来设置打印日志的线程数量- 这两个宏同样可以通过上面介绍的 CMake 中 config.h.in 来进行配置
- CMakeLists.txt内容如下
option(LOG_USE_ASYN "LOG_USE_ASYN" ON)
set(LOG_THREAD_COUNT 2)
- config.h.in内容如下
#cmakedefine LOG_USE_ASYN
#cmakedefine LOG_THREAD_COUNT @LOG_THREAD_COUNT@
- 注意:异步打印的话,打印顺序将无法百分之百保证,不过经过测试,基本99.99%的日志顺序还都是保证的