Serilog 日志框架如何自動(dòng)刪除超過(guò) N 天的日志 ?
咨詢區(qū)
- JohnB:
我的程序使用的日志框架是 Serilog,我是按天分割日志文件的,由于每日文件都比較大,我經(jīng)常手工刪除,但這樣做很傻,請(qǐng)問(wèn)日志框架有沒(méi)有自動(dòng)幫我刪除 N 天之間的日志呢?
回答區(qū)
- somethingRandom:
根據(jù)官方文檔:https://github.com/serilog/serilog-sinks-file/blob/dev/README.md#limits ,默認(rèn)保留文件個(gè)數(shù)是 retainedFileCountLimit =31,這就意味著最多保留最近的31個(gè)文件,當(dāng)然你也可以手工去修改,參考如下代碼:
- var log = new LoggerConfiguration()
- .WriteTo.File("log.txt", retainedFileCountLimit:= 42)
- .CreateLogger();
如果不想限制文件個(gè)數(shù),可以設(shè)置:retainedFileCountLimit = null 。
除了硬編碼,還可以通過(guò) xml 進(jìn)行配置。
- <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>
當(dāng)然如何你的程序時(shí) .NET Core 的話,可在 appsetting.json 中做如下配置:
- {
- "Serilog": {
- "WriteTo": [
- { "Name": "File", "Args": { "path": "log.txt", "retainedFileCountLimit": "42" } }
- ]
- }
- }
- mihails.kuzmins:
Serilog 非常靈活,即可以按天自動(dòng)創(chuàng)建日志文件,還可以設(shè)置最多保留多少個(gè)文件,參考配置。
- {
- "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}"
- }
- }
- ]
- },
- }
更多細(xì)節(jié),參見。
- https://github.com/serilog/serilog-sinks-file/pull/90
- https://github.com/serilog/serilog-sinks-rollingfile/blob/dev/README.md
點(diǎn)評(píng)區(qū)
.NET 有太多的日志框架,比如:nlog,log4net,其實(shí)我個(gè)人對(duì) Serilog 持謹(jǐn)慎態(tài)度,畢竟看過(guò)關(guān)于日志方面的坑都有它的蹤影!