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

Joh*_*hnB 5 .net c# wpf serilog

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

有没有一种方法可以在日志文件超过N天时自动"拖尾"(删除)日志文件?

谢谢

som*_*dom 10

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

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

var log = new LoggerConfiguration()
    .WriteTo.File("log.txt", retainedFileCountLimit:= 42)
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

通过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>
Run Code Online (Sandbox Code Playgroud)

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

在 JSONappsettings.json配置中

{
  "Serilog": {
    "WriteTo": [
      { "Name": "File", "Args": { "path": "log.txt", "retainedFileCountLimit": "42" } }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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


mih*_*ins 7

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

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


小智 5

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

  • 这个答案a)依赖于外部链接而不是复制相关信息,b)有点过时,因为“rollingfile”接收器已合并到常规“文件”同步中。我建议看看下一个答案。 (4认同)
  • 好吧,您可以每天配置一次滚动文件,然后将`retainedFileCountLimit`设置为所需的天数限制... (2认同)