spdlog git地址
https://github.com/gabime/spdlog
参考README.md文件
1.下载代码
git clone https://github.com/gabime/spdlog.git
2.编译
- windows下:
cd spdlog
mkdir build
cd build
cmake ..
再build目录中打开spdlog.sln,进行编译,编译后生成spdlog.lib静态库
- Linnux下:
cd spdlog && mkdir build && cd build
cmake .. && make -j
3.引用
- 源码目录include下的spdlog目录中的所有头文件及生成的spdlog.lib文件
4.使用示例
- 可参考源码example目录下给定例子及ReamdMe.md例子,其中日志输出格式可参考源码目录下的wiki中给出的说明
- 下面给出使用示例:
#pragma once
#ifndef ENABLE_STDOUT
#define LOG_MAX_SIZE 10*1024*1024
#define LOG_MAX_FILES 100
#ifndef SPDLOG_ACTIVE_LEVEL
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE //set the log level,need define SPDLOG_ACTIVE_LEVEL and set_level before include 'spdlog.h'.
#endif //SPDLOG_ACTIVE_LEVEL
#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h" //分割文件
//#include "spdlog/sinks/basic_file_sink.h" //不分割文件
#define LOGGER_INIT(fileName) \
spdlog::set_level(spdlog::level::trace); \ /*可以在 #include "spdlog/spdlog.h"之后设置*/
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e][thread %t][%s:%#][%l] : %v"); \
spdlog::rotating_logger_mt("LogDemo", fileName,LOG_MAX_SIZE,LOG_MAX_FILES); //分割文件
//spdlog::basic_logger_mt("LogDemo",fileName,true); //不分割文件
#define LOGGER_UNINIT() \
spdlog::drop_all(); \
spdlog::shutdown();
#define LOGGER_GET_FILE_LOGGER() spdlog::get("LogDemo")
#define LOGGER_TRACE(args,...) SPDLOG_LOGGER_TRACE(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#define LOGGER_DEBUG(args,...) SPDLOG_LOGGER_DEBUG(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#define LOGGER_INFO(args,...) SPDLOG_LOGGER_INFO(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#define LOGGER_WARN(args,...) SPDLOG_LOGGER_WARN(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#define LOGGER_ERROR(args,...) SPDLOG_LOGGER_ERROR(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#define LOGGER_CRITICAL(args,...) SPDLOG_LOGGER_CRITICAL(LOGGER_GET_FILE_LOGGER(),args,__VA_ARGS__); LOGGER_GET_FILE_LOGGER()->flush();
#else
#include "spdlog/spdlog.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include <iostream>
#include <memory>
#define LOGGER_INIT(...) \
spdlog::set_level(spdlog::level::trace); \
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e][thread %t][%s:%#][%l] : %v"); \
spdlog::stdout_color_st("console");
#define LOGGER_UNINIT() \
spdlog::drop_all();
#define LOGGER_GET_FILE_LOGGER() spdlog::get("console")
#define LOGGER_TRACE(...) LOGGER_GET_FILE_LOGGER()->trace(__VA_ARGS__);
#define LOGGER_DEBUG(...) LOGGER_GET_FILE_LOGGER()->debug(__VA_ARGS__);
#define LOGGER_INFO(...) LOGGER_GET_FILE_LOGGER()->info(__VA_ARGS__);
#define LOGGER_WARN(...) LOGGER_GET_FILE_LOGGER()->warn(__VA_ARGS__);
#define LOGGER_ERROR(...) LOGGER_GET_FILE_LOGGER()->error(__VA_ARGS__);
#define LOGGER_CRITICAL(...) LOGGER_GET_FILE_LOGGER()->critical(__VA_ARGS__);
#endif