写一段C++程序,实现spdlog中配置文件大小轮转
时间: 2024-10-22 12:15:28 浏览: 43
在SPDLOG中,我们可以使用`spdlog::rotating_logger`来配置日志文件的大小轮转。首先,你需要包含必要的头文件,并设置好日志级别、输出流以及大小限制。这里是一个简单的示例:
```cpp
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/rotating_file_sink.h>
int main() {
// 创建一个日志对象,命名可以自定义
std::string logger_name = "my_logger";
// 配置基本的日志格式和输出到控制台
auto sink_console = spdlog::stdout_color_sink_mt();
sink_console->set_pattern("%v");
// 创建一个基本文件Sink,用于默认的日志输出
std::string log_path = "logs/app.log";
auto sink_file = spdlog::basic_file_sink_mt(log_path);
sink_file->set_pattern("%Y-%m-%d %H:%M:%S | %v");
// 创建大小轮转文件Sink
auto rotate_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(
log_path + ".log", // 输出文件名,前缀加上".log"
10 * 1024 * 1024, // 每个文件的最大大小,这里是10MB
5, // 当达到最大大小时,保留最多5个备份文件
true // 是否在日志关闭时自动切割新文件
);
// 将console Sink和size rotating file Sink都添加给logger
auto logger = spdlog::stderr_logger_mt(logger_name);
logger->add(sink_file);
logger->add(rotate_sink);
// 设置日志级别,例如debug
logger->set_level(spdlog::level::debug);
// 使用logger记录一些日志信息
logger->info("This is a message with size rotating file sink");
logger->warn("Warning message will be rotated if the size exceeds limit");
return 0;
}
阅读全文