Serilog 日志框架如何自动删除超过 N 天的日志 ?
咨詢區
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 持謹慎態度,畢竟看過關于日志方面的坑都有它的蹤影!
總結
以上是生活随笔為你收集整理的Serilog 日志框架如何自动删除超过 N 天的日志 ?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正确使用和理解C#中的闭包
- 下一篇: 总是想得太简单?试试我的方法