Serilog - RollingFile Sink不会根据日期和大小滚动文件

问题描述 投票:4回答:5

我正在使用Serilog - RollingFile Sink,但它将所有数据存储在一个文件中一天。在我的应用程序中,每天写入1 GB的日志。所以我想根据日期和大小滚动日志文件。

如何根据日期和大小配置RollingFile Sink来滚动文件?

c# serilog rollingfilesink
5个回答
1
投票

我相信你正在寻找RollingFile接收器的这种替代实现:

Serilog滚动文件接收器(替代)

这是一个滚动文件接收器,允许您根据文件大小指定翻转行为。 https://github.com/BedeGaming/sinks-rollingfile


1
投票

现在Serilog.Sinks.RollingFile软件包已被弃用,转而使用Serilog.Sinks.File(参见github项目readme简介)。 Serilog.Sinks.File包已升级为支持文件滚动。您可以使用以下Serilog配置按时间和大小启用滚动:

"Serilog": {
    "Using": ["Serilog.Sinks.File"],
    "MinimumLevel": "Debug",
    "WriteTo": [
        {
            "Name": "File",
            "Args": {
                "path": "logs/log.txt",
                "rollingInterval": "Day",
                "rollOnFileSizeLimit": true,
                "fileSizeLimitBytes": "512",
                "retainedFileCountLimit": 3,
                "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
            }
        }
    ]
  }

然后你会得到这样的东西:

enter image description here


0
投票

来自documentation

为避免关闭具有失控磁盘使用率的应用程序,滚动文件接收器默认将文件大小限制为1GB。可以使用fileSizeLimitBytes参数更改或删除限制。

.WriteTo.RollingFile("log-{Date}.txt", fileSizeLimitBytes: null)

该示例显示通过将其设置为null来删除限制。在您的情况下,将其设置为适当的大小。

UPDATE

是的,根据您的评论,我查看了源代码,看起来RollingFileSink的最低度量单位是一天,因此在同一天有多个,似乎不受支持。然而,我并没有仔细观察,看起来OpenFile中的RollingFileSink.cs方法与序列号有关。您可能想要查看该代码正在执行的操作。


0
投票

当前版本还实现每小时滚动。这可能是您问题的另一种解决方案。

{Hour}每小时创建一个文件。文件名使用yyyyMMddHH格式。

喜欢:.WriteTo.RollingFile(“log- {Date} .Hour”)


0
投票

在appsettings.json中你应该写类似的东西:

{
"Serilog": {

  "Using": ["Serilog.Sinks.File"],
  "MinumumLevel": {
    "Default": "Error",
    "Override": {
      //"Microsoft": "Warning",
      //"System": "Warning",  
      "Microsoft.AspNetCore.Authentication": "Verbose",
      "WebApplicationLogger1.Startup": "Warning",
      "WebApplicationLogger1.Pages": "Warning"
    }
  },
  "WriteTo": [
    {
      "Name": "RollingFile",
      "Args": {
        "rollingInterval": "Day",  // --> THIS IS THAT YOU NEED
        "pathFormat": "C:\\Logfiles\\File-{Date}.log",
        "restrictedToMinimumLevel": "Warning"   
      }
     }
   ],
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.