【问题标题】:boost: text_file_backend file_name and collector targetboost: text_file_backend 文件名和收集器目标
【发布时间】:2016-07-15 18:58:19
【问题描述】:

当设置使用text_file_backend 并设置collector 时,是在keywords::target 目录中创建日志文件还是collector 将旧的日志文件移到那里?

如果collector 移动它们,collector 何时移动它们,在旧日志文件关闭并创建新文件后立即或在其他时刻?

同样,如果collector 在某个时刻移动它们,新的日志文件(或多个文件)在一个地方,而旧的日志文件在另一个地方。假设我希望collector 删除非常旧的文件,有没有办法将日志文件保留在创建它们的相同位置但删除非常旧的文件?

【问题讨论】:

    标签: c++ logging boost boost-log log-rotation


    【解决方案1】:

    这种行为有据可查here。

    本质上,接收器写入一个日志文件,其名称在file_name 命名参数中指定。如果该参数为字符串模板,则每次打开新文件时都会重新生成文件名。

    在某些情况下,接收器可能会旋转文件。这意味着当前文件被关闭并传递给收集器(如果设置了一个)。然后打开一个新文件。

    收集器进行文件管理。在传递一个新文件后,它可能会对旧文件和 storage 中的文件系统执行限制检查 - 您在 target 命名参数中提供的目录。此时,旧文件可能会从存储中删除,以便满足限制并能够将新文件也放在那里。

    可以在target参数中指定存储目录与你写入原始文件的目录相同(file_name参数中的目录)。在这种情况下,某些限制可能不太可靠地维护(例如,总文件大小将不包括当前正在写入的文件,因此旧文件仍将仅在轮换时被删除),但除此之外,它仍应按描述工作。

    【讨论】:

    • 您刚刚向我保证,收集器目标与原始日志文件目录相同是可以的。这就是我最终需要的。另外,很高兴从我询问的图书馆作者那里得到答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多