0

我对此的理解是文件将被限制在指定的大小。但我不明白max_files = 3,我们会有一个或三个文件吗?

我在这里运行示例并得到一个文件。

#include <iostream>

#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);

    logger->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name)");
}

int main()
{
    rotating_example();
    return 0;
}
4

1 回答 1

1

最多3个文件。一旦日志文件,比如说mylog.txt大小达到 5MB,它就会被轮换,即重命名为mylog.1txt并创建一个具有原始名称的新空文件mylog.txt。一旦新的达到 5MB,前一个被重命名为mylog.2txt,当前一个被重命名为,并mylog.1txt使用原始名称再次创建一个新的空的mylog.txt。一旦达到限制,文件将不再旋转,而在达到限制后,当前文件将被截断。

spdlog 的实现相对简单。分析它很容易。参见旋转算法重命名算法

于 2022-01-23T20:04:02.993 回答