如何在.Net WPF应用程序中使用Serilog自动拖尾(删除)旧日志?

时间:2017-06-15 21:29:37

标签: c# .net wpf serilog

我在.Net WPF应用程序中使用Serliog。

有没有办法可以"尾巴" (删除)日志文件超过N天时会自动删除吗?

由于

3 个答案:

答案 0 :(得分:8)

根据https://github.com/serilog/serilog-sinks-file/blob/dev/README.mdretainedFileCountLimit的默认值为31,因此默认情况下仅保留最新的31个文件。

要更改代码中保存的文件数量:

var log = new LoggerConfiguration()
    .WriteTo.File("log.txt", retainedFileCountLimit:= 42)
    .CreateLogger();

通过null以删除限制。

在XML <appSettings>配置中:

<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>

并传递一个空字符串以删除限制。

在JSON appsettings.json配置中

{
  "Serilog": {
    "WriteTo": [
      { "Name": "File", "Args": { "path": "log.txt", "retainedFileCountLimit": "42" } }
    ]
  }
}

并传递一个空字符串以删除限制。 请注意,我尚未测试JSON配置。

答案 1 :(得分:5)

https://github.com/serilog/serilog-sinks-rollingfile/blob/dev/README.md 看这里。您可以每天配置新日志文件的自动创建,也可以设置要保留多少日志文件

答案 2 :(得分:3)

现在,您还可以指定属性retainedFileTimeLimithttps://github.com/serilog/serilog-sinks-file/pull/90

顺便说一句,如果您只想限制日期,请不要忘记指定retainedFileCountLimit: null。在当前实现的情况下,reservedFileCountLimit的默认值为31。因此,如果省略该参数,则也会应用此过滤器