咨询区
JohnB:
我的程序使用的日志框架是 Serilog,我是按天分割日志文件的,由于每日文件都比较大,我经常手工删除,但这样做很傻,请问日志框架有没有自动帮我删除 N 天之间的日志呢?
回答区
somethingRandom:
根据官方文档:https://github.com/serilog/serilog-sinks-file/blob/dev/README.md#limits
,默认保留文件个数是 retainedFileCountLimit =31,这就意味着最多保留最近的31个文件,当然你也可以手工去修改,参考如下代码:
var log = new LoggerConfiguration().WriteTo.File("log.txt", retainedFileCountLimit:= 42).CreateLogger();
如果不想限制文件个数,可以设置:retainedFileCountLimit = null
。
除了硬编码,还可以通过 xml 进行配置。
<appSettings><add key="serilog:using:File" value="Serilog.Sinks.File" /><add key="serilog:write-to:File.path" value="log.txt" /><add key="serilog:write-to:File.retainedFileCountLimit" value="42"/>
</appSettings>
当然如何你的程序时 .NET Core 的话,可在 appsetting.json 中做如下配置:
{"Serilog": {"WriteTo": [{ "Name": "File", "Args": { "path": "log.txt", "retainedFileCountLimit": "42" } }]}
}
mihails.kuzmins:
Serilog 非常灵活,即可以按天自动创建日志文件,还可以设置最多保留多少个文件,参考配置。
{"Serilog": {"Using": [ "Serilog.Sinks.File" ],"MinimumLevel": "Debug","WriteTo": [{ "Name": "Console" },{"Name": "File","Args": {"path": "App_Data\\Logs\\app_.log","rollingInterval": "Day","fileSizeLimitBytes": "52428800","rollOnFileSizeLimit": "true","retainedFileCountLimit": "100","retainedFileTimeLimit": "7.00:00:00", //Deletes files older than 7 days"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"}}]},
}
更多细节,参见。
https://github.com/serilog/serilog-sinks-file/pull/90
https://github.com/serilog/serilog-sinks-rollingfile/blob/dev/README.md
点评区
.NET 有太多的日志框架,比如:nlog,log4net,其实我个人对 Serilog 持谨慎态度,毕竟看过关于日志方面的坑都有它的踪影!