如何配置Serilog使滚动日志中最新日志始终无数字后缀
解决Serilog文件日志滚动时保持最新日志为无后缀文件名的问题
要让最新日志始终保留为MyApp.log,旧日志滚动时自动添加数字后缀,你需要调整Serilog的配置并确保使用正确版本的日志接收器包:
1. 更新Serilog.Sinks.File包
首先确认项目中引用的Serilog.Sinks.File包为2.0.0及以上版本(当前最新稳定版为5.x),旧版本的滚动逻辑与你期望的相反,升级后才能实现目标行为。可通过NuGet包管理器完成更新。
2. 修改日志配置
替换原有配置为以下代码,该配置会让当前写入的日志始终保持无后缀文件名,达到大小限制时自动将旧日志重命名为带数字后缀的文件:
.WriteTo.File( path: "C:/Logs/MyApp.log", fileSizeLimitBytes: 5242880, // 5 MB rollOnFileSizeLimit: true, retainedFileCountLimit: 5, rollingInterval: RollingInterval.Infinite );
关键参数说明:
rollingInterval: RollingInterval.Infinite:禁用按时间滚动逻辑,仅触发按文件大小的滚动,保证命名规则仅基于数字后缀。rollOnFileSizeLimit: true:开启文件大小触发的滚动功能。retainedFileCountLimit: 5:自动清理超过5个的旧日志文件,避免磁盘空间过度占用。
配置生效后,日志文件结构会变为:
MyApp.log- 最新日志(正在写入)MyApp_001.log- 次新日志MyApp_002.log- 旧日志- ...(最多保留5个旧文件)
内容的提问来源于stack exchange,提问作者ktom
相关产品推荐
相关产品推荐

