【发布时间】:2019-01-14 12:17:51
【问题描述】:
有没有办法设置 Serilog 以在保持最大文件大小的同时保持记录在同一个文件中?
换句话说,如果我将最大文件大小指定为 100MB,则该进程应在添加新条目之前从文件中删除较早的条目。
【问题讨论】:
标签: serilog
有没有办法设置 Serilog 以在保持最大文件大小的同时保持记录在同一个文件中?
换句话说,如果我将最大文件大小指定为 100MB,则该进程应在添加新条目之前从文件中删除较早的条目。
【问题讨论】:
标签: serilog
TL;DR 没有; File(或其前身RollingFile)没有提供这样的功能,并且在任何时候都不太可能为磁盘支持的日志提供这样的功能。
因此,可用的最佳解决方案是将最大计数设置为 2 个日志。
实现您所描述的根本问题是大多数文件系统的工作方式,它需要重写整个文件以删除正在修剪的东西 - 这意味着编写者会阻塞一些东西(并导致过度工作)发生。另一个需要克服的问题是管理隐含在多个编写器中的竞争条件,所有编写器都试图同时影响修剪(和/或参数略有不同)。
(如果您查看 Serilog Github 问题列表,您会不时看到人们通过在文件顶部询问具有最新信息的日志以不同的方式提出相同的问题)
更新:Someone hacked it in - 这个问题涵盖了这个领域 ni 很好的细节 - 我的评论比这个答案更完整和更有条理;)
【讨论】: