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

How do I automatically tail (delete) older logs using Serilog in a .Net WPF application?

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

有没有一种方法可以在日志文件超过 N 天时自动“尾部”(删除)它们?

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

根据documentationretainedFileCountLimit的默认值是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>

并传递一个空字符串以取消限制。

在JSONappsettings.json配置

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

并传递一个空字符串以取消限制。 请注意,我还没有测试 JSON 配置。

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

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