参考博客:
日志记录库 spdlog 基础使用_spdlog 写日志-CSDN博客
GitHub - gabime/spdlog: Fast C++ logging library.
首先在github上下载spdlog源码,不想编译成库的话,可以直接使用源码,将include文件夹下的spdlog文件夹,拷贝至代码所在路径,然后配置包含目录为代码所在目录。

其他注意事项:
- flag meaning example
- %v 日志内容 “my log test content”
- %t 线程ID “123”
- %P 进程ID “234”
- %n 记录器Logger名 “basicLogger”
- %l 日志级别 “debug”, “info”, etc
- %L 日志级别简称 “D”, “I”, etc
- %a 星期几(简称) “Thu”
- %A 星期几 “Thursday”
- %b 月份简称 “Aug”
- %B 月份 “August”
- %c 日期时间 “Thu Aug 23 15:35:46 2014”
- %C 年(两位) “14”
- %Y 年 “2014”
- %D %x 日期简写 “08/23/14”
- %m 月份(数字) “11”
- %d 日(数组) “29”
- %H 小时(24制) “23”
- %I 小时(12制) “11”
- %M 分钟 “59”
- %S 秒 “58”
- %e 毫秒 “678”
- %f 微秒 “056789”
- %F 纳秒 “256789123”
- %p AM/PM “AM”
- %r 时间(12制) “02:55:02 pm”
- %R 时分(24制) “23:55”
- %T %X 时间(24制) “23:55:59”
- %z 时区(偏移) “+02:00”
- %E epoch(秒) “1528834770”
- %% 百分号 “%”
- %+ 默认格式 “[2014-10-31 23:46:59.678] [mylogger] [info] Some message”
- %^ start color range (can be used only once) “[mylogger] [info(green)] Some message”
- %$ end color range (for example %^[+++]%$ %v) (can be used only once) [+++] Some message
- %@ 文件名与行数 my_file.cpp:123
- %s 文件名 my_file.cpp
- %g 文件名(含路径) /some/dir/my_file.cpp
- %# 行数 123
- %! 函数名 my_func
- %o 相对上一条记录的时间间隔(毫秒) 456
- %i 相对上一条记录的时间间隔(微秒) 456
- %u 相对上一条记录的时间间隔(纳秒) 11456
- %O 相对上一条记录的时间间隔(秒) 4
- #include
- #include
- #include
-
- void init_logging()
- {
- spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%t] [%l] %v");
- //大于等于该等级的将被输出
- //spdlog::set_level(spdlog::level::info);
-
- spdlog::info("Hello, spdlog!");
-
- spdlog::trace("trace信息");
- spdlog::debug("debug信息");
- spdlog::info("info信息");
- spdlog::warn("warn信息");
- spdlog::error("error信息");
- spdlog::critical("critical信息");
- }
-
- void testSpdLog() {
- // 文件日志定义,设定日志最大100M,且最多保留10个
- auto fileLogger = spdlog::rotating_logger_mt("fileLogger", "log.log", 1024 * 1024 * 100, 10);
- //大于等于该等级的将被输出
- fileLogger->set_level(spdlog::level::trace);
-
- //定义输出格式
- spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] [%s->%!->%#] [%v]"); //log类型 文件->函数名->行数 输出内容
- spdlog::set_default_logger(fileLogger);
-
- for (int i = 0; i < 2; ++i) {
- SPDLOG_LOGGER_TRACE(fileLogger, "trace输出:{}-{}", i, "测试trace");
- SPDLOG_LOGGER_DEBUG(fileLogger, "debug输出:{}-{}", i, "测试debug");
- SPDLOG_LOGGER_INFO(fileLogger, "info输出:{}-{}", i, "测试info");
- SPDLOG_LOGGER_WARN(fileLogger, "warn输出:{}-{}", i, "测试warn");
- SPDLOG_LOGGER_ERROR(fileLogger, "Some error message");
- SPDLOG_LOGGER_CRITICAL(fileLogger, "Some critical message");
- }
- }
-
- void testMultiLog() {
- //文件sink
- auto file_sink = std::make_shared
("logs.log", 1024 * 1024 * 100, 10); - file_sink->set_level(spdlog::level::debug);
- file_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] [%s->%!->%#] [%v]");
-
- //控制台sink
- auto console_sink = std::make_shared
(); - console_sink->set_level(spdlog::level::debug);
- console_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] [%s->%!->%#] [%v]");
-
- std::vector
sinks; - sinks.push_back(console_sink);
- sinks.push_back(file_sink);
-
- auto multiLogger = std::make_shared
("multiSink", begin(sinks), end(sinks)); - multiLogger->set_level(spdlog::level::debug);
- spdlog::set_default_logger(multiLogger);
-
- for (int i = 0; i < 2; ++i) {
- SPDLOG_LOGGER_TRACE(multiLogger, "trace输出:{}-{}", i, "测试trace");
- SPDLOG_LOGGER_DEBUG(multiLogger, "debug输出:{}-{}", i, "测试debug");
- SPDLOG_LOGGER_INFO(multiLogger, "info输出:{}-{}", i, "测试info");
- SPDLOG_LOGGER_WARN(multiLogger, "warn输出:{}-{}", i, "测试warn");
- SPDLOG_LOGGER_ERROR(multiLogger, "Some error message");
- SPDLOG_LOGGER_CRITICAL(multiLogger, "Some critical message");
- }
- }
-
- int main()
- {
- //init_logging();
- //testSpdLog();
- testMultiLog();
-
- return 0;
- }
