如何配置Serilog滚动文件:主文件存最新日志,旧日志归档
Serilog 配置实现主日志文件保留最新内容
可以实现你要的效果,这是Serilog文件接收器的标准行为之一,你当前的配置可能存在参数错误导致行为不符合预期。
正确配置示例
代码方式配置
Log.Logger = new LoggerConfiguration() .WriteTo.File( path: "FancyApp.log", fileSizeLimitBytes: 1073741824, // 1GB rollOnFileSizeLimit: true, retainedFileCountLimit: null, // 不限制归档文件数量,可按需设置具体数值 rollingInterval: RollingInterval.Infinite // 仅按文件大小触发滚动,禁用时间滚动 ) .CreateLogger();
配置文件方式(appsettings.json)
{ "Serilog": { "WriteTo": [ { "Name": "File", "Args": { "path": "FancyApp.log", "fileSizeLimitBytes": 1073741824, "rollOnFileSizeLimit": true, "retainedFileCountLimit": null, "rollingInterval": "Infinite" } } ] } }
参数说明
rollOnFileSizeLimit: true:开启按文件大小触发归档逻辑fileSizeLimitBytes:设置单文件最大容量为1GB(102410241024字节)rollingInterval: Infinite:关闭按时间维度的滚动,确保仅在文件达到大小上限时归档retainedFileCountLimit:可选参数,用于限制保留的归档文件数量,设为null则保留所有历史归档文件
归档行为说明
当FancyApp.log达到1GB上限时,Serilog会自动执行以下操作:
- 将已存在的
FancyApp.log.1重命名为FancyApp.log.2,FancyApp.log.2重命名为FancyApp.log.3,以此类推 - 将当前的
FancyApp.log重命名为FancyApp.log.1 - 创建新的空
FancyApp.log,后续最新日志会写入这个新文件
这样就能保证FancyApp.log始终存储最新的日志内容,旧日志被逐步推送到编号递增的归档文件中。
内容的提问来源于stack exchange,提问作者gakera
相关产品推荐
相关产品推荐

