2014-01-22 219 views
4

我想使用Boost.Log(v1.55.0)来设置日志记录,我似乎无法找到在后端安装文件收集器的方法所以它只会保留最后20个日志。如何设置boost.log来限制日志文件的数量

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

在调用汇::文件:: make_collector有一些我已经找到像MAX_SIZE和min_free_space关键字,但是这两个都不是我要找的。我只想像max_files这样的东西,所以我可以告诉它只保留最后20个日志,而不管它们占用多少磁盘空间。我能找到的唯一参考是这张票已打开:https://svn.boost.org/trac/boost/ticket/8746

也似乎没有一个可用的关键字的文件列表。我发现的所有这些都来自网络上的例子。

+0

我在寻找相同。你有没有找到解决方案? – zuko

+0

@zuko不,我找不到任何解决方案。这可能是他们稍后添加的内容。我最终没有使用提升记录。 – Murrgon

回答

5

make_collector文件,从text_file_backend.hpp采取:

下面的命名参数的支持:

  • 目标 - 指定被存储在文件的目标目录。该参数是强制性的。
  • max_size - 指定收集器将尝试不超过的存储文件的最大总大小(以字节为单位)。如果大小超过此阈值,则会删除最旧的文件以释放空间。请注意,如果单个文件的大小超过\ c max_size值,则可能会超出阈值。如果未指定,则不保留阈值。
  • min_free_space - 指定收集器尝试维护的目标目录中的最小可用空间(以字节为单位)。如果超出阈值,则删除最旧的文件以释放空间。如果未指定,则不保留阈值。

所以的boost ::登录目前不支持,收集有关他们的人数旧的日志文件。

相关问题