Serilog Rolling仅记录一个文件

时间:2019-01-13 17:42:48

标签: serilog

有没有一种方法可以设置Serilog以在保持最大文件大小的同时保持登录同一文件?

换句话说,如果我将最大文件大小指定为100MB,则该过程应在添加新条目之前从文件中删除较早的条目。

1 个答案:

答案 0 :(得分:1)

TL; DR号; File(或其前身RollingFile)没有提供这样的功能,并且对于磁盘支持的日志在任何时候都不太可能提供这种功能。

因此,最好的解决方案是将最大计数设置为2个日志。

实现您所描述的内容的根本问题是大多数文件系统的工作方式,这将有必要重写整个文件以删除要修剪的内容-这意味着编写者在执行此操作时会阻塞内容(并导致不必要的工作)发生。另一个需要克服的问题是管理所有试图同时(和/或使用略有不同的参数)修剪的多个编写器中隐含的竞争条件。

(如果您在Serilog Github问题列表中查找,您会不时看到人们以不同的方式询问相同的问题,方法是在文件顶部索取具有最新信息的日志)< / p>

更新:Someone hacked it in-该问题涵盖了该地区的详细信息-我的评论比这个答案更完整,更有条理;)