【问题标题】:Serilog - keep only 7 latest filesSerilog - 仅保留 7 个最新文件
【发布时间】:2021-09-03 21:31:59
【问题描述】:

我使用 serilog 并将日期作为我文件名的一部分。这是获取文件的简单方法。目前我正在检查每晚的事件,我只选择早上的最后一个文件。

现在,我只想保留 7 天。这是 reservedFileCountLimit 的用途。 但是,这也无法按我的意愿工作,因为它可能会检查该特定文件名。

我该怎么做? (我有自己的日志系统,它删除了一周前的文件) 所有 serilog 属性在哪里描述?我缺少对这些的概述。

        //Add Serilog
           string logFileName = HostingEnvironment.MapPath(@"~/new_" + DateTime.Now.ToString("yyyyMMdd") + ".log");
           Log.Logger = new LoggerConfiguration()
               .WriteTo.File(
                   path: logFileName,
                   retainedFileCountLimit: 7,
                   shared: true,
                   rollingInterval: RollingInterval.Day,
                   rollOnFileSizeLimit: true,
                   fileSizeLimitBytes: 123456,
                   flushToDiskInterval: TimeSpan.FromSeconds(5))
               .CreateLogger();
           Log.Information("Starting Serilog #1");

【问题讨论】:

    标签: serilog


    【解决方案1】:

    File 接收器会自动在文件名中包含日期 - 不要 在文件名中包含 DateTime.Now 并让 Serilog 处理,您应该会得到您期望的保留.

    var log = new LoggerConfiguration()
        .WriteTo.File
        (
            "new_.txt", // <<<<<<<<<<<<<<<<<<<<<<
            rollingInterval: RollingInterval.Day,
            retainedFileCountLimit: 7,
            // ...
        )
        .CreateLogger();
    

    这会将时间段附加到文件名,创建一个文件集,如下所示:

    new_20180631.txt
    new_20180701.txt
    new_20180702.txt
    

    documentation of the File sink is the repository on GitHub

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多