相关文章推荐
朝气蓬勃的茶叶  ·  jQuery ...·  1 年前    · 
想发财的野马  ·  Qt 中 QListWidget ...·  1 年前    · 
安静的自行车  ·  C# ...·  1 年前    · 
沉稳的生姜  ·  Node 进阶:express ...·  1 年前    · 
注册/登录

Serilog 日志框架如何自动删除超过 N 天的日志 ?

开发 架构
我的程序使用的日志框架是 Serilog,我是按天分割日志文件的,由于每日文件都比较大,我经常手工删除,但这样做很傻,请问日志框架有没有自动帮我删除 N 天之间的日志呢?

[[431915]]

  • JohnB:
  • 我的程序使用的日志框架是 Serilog,我是按天分割日志文件的,由于每日文件都比较大,我经常手工删除,但这样做很傻,请问日志框架有没有自动帮我删除 N 天之间的日志呢?

  • somethingRandom:
  • 根据官方文档:https://github.com/serilog/serilog-sinks-file/blob/dev/README.md#limits ,默认保留文件个数是 retainedFileCountLimit =31,这就意味着最多保留最近的31个文件,当然你也可以手工去修改,参考如下代码:

    1. var log = new LoggerConfiguration() 
    2.  
    3. .WriteTo.File("log.txt", retainedFileCountLimit:= 42) 
    4.  
    5. .CreateLogger(); 

    如果不想限制文件个数,可以设置:retainedFileCountLimit = null 。

    除了硬编码,还可以通过 xml 进行配置。

    1. <appSettings> 
    2.   <add key="serilog:using:File" value="Serilog.Sinks.File" /> 
    3.   <add key="serilog:write-to:File.path" value="log.txt" /> 
    4.   <add key="serilog:write-to:File.retainedFileCountLimit" value="42"/> 
    5. </appSettings> 

    当然如何你的程序时 .NET Core 的话,可在 appsetting.json 中做如下配置:

    1.   "Serilog": { 
    2.     "WriteTo": [ 
    3.       { "Name""File""Args": { "path""log.txt""retainedFileCountLimit""42" } } 
    4.     ] 
    5.   } 
  • mihails.kuzmins:
  • Serilog 非常灵活,即可以按天自动创建日志文件,还可以设置最多保留多少个文件,参考配置。

    1.     "Serilog": { 
    2.     "Using": [ "Serilog.Sinks.File" ], 
    3.     "MinimumLevel""Debug"
    4.     "WriteTo": [ 
    5.       { "Name""Console" }, 
    6.       { 
    7.         "Name""File"
    8.         "Args": { 
    9.           "path""App_Data\\Logs\\app_.log"
    10.           "rollingInterval""Day"
    11.           "fileSizeLimitBytes""52428800"
    12.           "rollOnFileSizeLimit""true"
    13.           "retainedFileCountLimit""100"
    14.           "retainedFileTimeLimit""7.00:00:00", //Deletes files older than 7 days 
    15.           "outputTemplate""{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" 
    16.         } 
    17.       } 
    18.     ] 
    19.   }, 

    更多细节,参见。

  • https://github.com/serilog/serilog-sinks-file/pull/90
  • https://github.com/serilog/serilog-sinks-rollingfile/blob/dev/README.md
  • .NET 有太多的日志框架,比如:nlog,log4net,其实我个人对 Serilog 持谨慎态度,毕竟看过关于日志方面的坑都有它的踪影!

    责任编辑:武晓燕 NET技术问答
    点赞
    收藏