有没有办法设置 Serilog 以在保持最大文件大小的同时继续登录同一文件?
换句话说,如果我将最大文件大小指定为 100MB,则该进程应在添加新条目之前从文件中删除较早的条目。
TL;DR 号;这File
(或其RollingFile
前身)不提供这样的设施,并且在任何时候都不太可能为磁盘支持的日志提供这种设施。
因此,可用的最佳解决方案是将最大计数设置为 2 个日志。
实现您所描述的内容的根本问题是,大多数文件系统的工作方式,需要重写整个文件以删除正在修剪的内容 - 这意味着编写者在发生这种情况时会阻塞事物(并导致不必要的工作)。需要克服的另一个问题是管理多个编写器中隐含的竞争条件,所有编写器都试图同时(和/或使用略有不同的参数)实现修剪。
(如果您查看 Serilog Github 问题列表,您会不时看到人们以不同的方式提出相同的问题,要求在文件顶部包含最新信息的日志)
UPDATE: 有人黑进去了 https://github.com/serilog/serilog-sinks-file/issues/40#issuecomment-420011666- 该问题涵盖了这个领域,但细节很好 -我的评论比这个答案更完整、更有条理;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)