如何让Serilog按日期保留日志文件(不受数量限制)?是否需自定义Sink?
无需编写自定义Sink,通过配置即可实现按日期清理日志
当前你的Serilog配置中,retainedFileCountLimit: 31是按文件总数保留最近31个日志文件,但你需要的是按日期保留最近31天的所有日志文件(无论单日生成多少个),这个需求不需要编写自定义Sink,通过Serilog.Sinks.File自带的配置项就能实现:
- 移除
retainedFileCountLimit配置项 - 添加
retainedFileTimeLimit配置项,设置为"31.00:00:00"(表示保留最近31天的日志)
修改后的完整配置如下:
"flushToDiskInterval": "00:00:10", "outputTemplate": "[{Timestamp:MM/dd/yyyy HH:mm:ss:fff}-{Level}]: {Message} - ({SourceContext:l}){NewLine}{Exception}", "rollingInterval": "Day", "retainedFileTimeLimit": "31.00:00:00", "fileSizeLimitBytes": 5242880, //5MB "rollOnFileSizeLimit": "true"
配置说明
retainedFileTimeLimit会根据每个日志文件的生成日期判断是否清理:所有超过指定时间(这里是31天)的日志文件都会被自动删除,单日生成的多个文件只要在31天范围内都会被保留,完全符合你的需求。
注意:需要确保你使用的Serilog.Sinks.File版本不低于v4.0.0(该版本引入了retainedFileTimeLimit功能)。
内容的提问来源于stack exchange,提问作者David Jiboye
相关产品推荐
相关产品推荐

