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

问题描述 投票:0回答:3

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

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

c# .net wpf serilog
3个回答
32
投票

根据文档,日志的保留期限由

retainedFileCountLimit
设置决定。默认情况下,
retainedFileCountLimit
的值为 31,因此仅保留最近的 31 个日志文件。

以编程方式配置

Serilog
时,您可以通过指定
retainedFileCountLimit
参数来调整保留的文件数量,如下所示:

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

通过

null
取消限制。

使用 XML 配置

Serilog
时(在
<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 配置

Serilog
时(在
appsettings.json
文件中):

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

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


10
投票

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


7
投票

现在你还可以指定一个属性

retainedFileTimeLimit
https://github.com/serilog/serilog-sinks-file/pull/90

顺便说一句,如果您只想按日期进行限制,请不要忘记指定

retainedFileCountLimit: null
。在当前实现中,retainedFileCountLimit 的默认值为 31。因此,如果您忽略该参数,也将应用此过滤器

© www.soinside.com 2019 - 2024. All rights reserved.