我正在尝试使用boost.log(v1.55.0)设置记录,我似乎找不到在后端设置文件收集器的方法最后20个日志。
namespace sinks = boost::log::sinks;
namespace keywords = boost::log::keywords;
typedef sinks::text_file_backend TextFileBackend;
typedef boost::shared_ptr<TextFileBackend> TextFileBackendPtr;
TextFileBackendPtr pBackend =
boost::make_shared<TextFileBackend>
(
keywords::file_name = "BoostLogTest_%Y%m%d.log",
keywords::auto_flush = true
);
// Set up where the rotated files will be stored
pBackend->set_file_collector
(
sinks::file::make_collector
(
keywords::target = "..\Logs"
)
);
在" calls :: file :: make_collector"的调用中,我发现了许多关键字,例如max_size和min_free_space,但是这两个都不是我想要的。我只想要Max_files之类的东西,因此我可以告诉它只能保留最后20个日志,而不管它们占用了多少磁盘空间。我唯一可以找到这样的参考是打开的这张票:https://svn.boost.org/trac/boost/ticket/ticket/8746。
似乎也没有可用于使用的关键字列表。我发现的所有内容都是来自网络上的示例。
来自 make_collector
的文档,取自 text_file_backend.hpp :
支持以下命名参数:
- 目标 - 指定存储在存储中的文件的目标目录。此参数是强制性的。
- max_size-指定收集器将尽量不超过的存储文件的最大总尺寸。如果大小超过此阈值,则将最旧的文件删除到可用空间。请注意,如果单个文件的大小超过 c max_size值,则可能会超过阈值。如果未指定,则不能保持阈值。
- min_free_space-在收集器试图维护的目标目录中指定字节中的最小自由空间。如果超过阈值,则将最古老的文件删除到可用空间。如果未指定,则不能保持阈值。
so boost :: log 当前不支持基于其号码收集旧日志文件。
使用max_files
参数:http://www.boost.org/doc/libs/1_61_0/libs/libs/log/log/doc/doc/doc/html/log/详细/sink_backends.html
void init_file_collecting(boost::shared_ptr< file_sink > sink)
{
sink->locked_backend()->set_file_collector(sinks::file::make_collector(
keywords::target = "logs",
keywords::max_size = 16 * 1024 * 1024,
keywords::min_free_space = 100 * 1024 * 1024,
keywords::max_files = 512
));
}