You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:11