spdlog
Very fast, header-only/compiled, C++ logging library.
参考信息
只是写一些自己已经用到的内容, 会很浅, 详细说明可以直接看github。
平台
- Linux, FreeBSD, OpenBSD, Solaris, AIX
- Windows (msvc 2013+, cygwin)
- macOS (clang 3.5+)
- Android
根据github上的信息, 应该是不支持Windows MinGW编译器, 自己也在msys下载库但无法使用...
logger类型
- basic logger, 无特殊功能、文件大小会随文本内容无线增长的logger
- rotating logger, 应该是可以自定义文本日志大小和数量的logger, 可以控制日志数量
- daily logger, 每天定时(自定义时间)创建一个新日志文件的logger
Create basic logger
#include "spdlog/sinks/basic_file_sink.h"
void basic_logfile_example()
{
try {
auto logger = spdlog::basic_logger_mt("basic_logger", "logs/basic-log.txt");
}
catch (const spdlog::spdlog_ex &ex){
std::cout << "Log init failed: " << ex.what() << std::endl;
}
}
Create rotating logger
#include "spdlog/sinks/rotating_file_sink.h"
void rotating_example()
{
// Create a file rotating logger with 5mb size max and 3 rotated files
auto max_size = 1048576 * 5;
auto max_files = 3;
auto logger = spdlog::rotating_logger_mt("some_logger_name", "logs/rotating.txt", max_size, max_files);
}
Create daily logger
#include "spdlog/sinks/daily_file_sink.h"
void daily_example()
{
// Create a daily logger - a new file is created every day on 2:30am
auto logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30);
}
spdlog也是可以支持异步打印日志的。
基本操作
spdlog使用了fmt库, 可以使用与python类似的格式打印文本信息。
关于fmt的使用方法,可参考旁边文章。