【问题标题】:Set maxium of Serilog rolling files设置 Serilog 滚动文件的最大值
【发布时间】:2021-06-16 07:33:07
【问题描述】:

我想知道是否可以设置滚动文件的最大数量?

我想这样做,所以我不需要创建作业来清理旧日志文件。上个月的日志就好了。

这是我目前的配置

        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var logFile = Path.Combine(_logPath, $"{_appName}_.json");
            var logFileErrors = Path.Combine(_logPath, $"{_appName}_errors_.json");
            var logFileStartUp = Path.Combine(_logPath, $"{_appName}_startup.json");

            return Host.CreateDefaultBuilder(args)
                .UseSerilog((context, provider, loggerConfig) =>
                    loggerConfig
                        .ReadFrom.Configuration(context.Configuration)
                        .Enrich.FromLogContext()
                        .Enrich.WithMachineName()
                        .Enrich.WithProperty("Assembly", $"{_appName}")
                        .Enrich.WithProperty("Version", $"{_appVersion}")
                        .WriteTo.Console(theme: AnsiConsoleTheme.Code)
                        .WriteTo.Logger(lc => lc
                            .Filter.ByIncludingOnly(e =>
                                e.Level is LogEventLevel.Warning or LogEventLevel.Error or LogEventLevel.Fatal)
                            .WriteTo.File(new ElasticsearchJsonFormatter(), logFileErrors,
                                fileSizeLimitBytes: 10485760L, rollingInterval: RollingInterval.Month,
                                rollOnFileSizeLimit: true))
                        .WriteTo.Logger(lc => lc
                            .Filter.ByIncludingOnly(e => e.Level is LogEventLevel.Information).Filter
                            .ByIncludingOnly(Matching.WithProperty("RequestId"))
                            .WriteTo.File(new ElasticsearchJsonFormatter(), logFile, fileSizeLimitBytes: 10485760L,
                                rollingInterval: RollingInterval.Month, rollOnFileSizeLimit: true))
                        .WriteTo.Logger(lc => lc
                            .Filter.ByExcluding(Matching.WithProperty("RequestId"))
                            .WriteTo.File(new ElasticsearchJsonFormatter(), logFileStartUp)))
                .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
        }

【问题讨论】:

    标签: serilog serilog-sinks-file


    【解决方案1】:

    结果证明这是一项非常简单的任务。使用retainedFileCountLimit。 下面的代码显示了它是如何使用的。

            private static IHostBuilder CreateHostBuilder(string[] args)
            {
                var logFile = Path.Combine(_logPath, $"{_appName}_.json");
                var logFileErrors = Path.Combine(_logPath, $"{_appName}_errors_.json");
                var logFileStartUp = Path.Combine(_logPath, $"{_appName}_startup.json");
    
                return Host.CreateDefaultBuilder(args)
                    .UseSerilog((context, provider, loggerConfig) =>
                        loggerConfig
                            .ReadFrom.Configuration(context.Configuration)
                            .Enrich.FromLogContext()
                            .Enrich.WithMachineName()
                            .Enrich.WithProperty("Assembly", $"{_appName}")
                            .Enrich.WithProperty("Version", $"{_appVersion}")
                            .WriteTo.Console(theme: AnsiConsoleTheme.Code)
                            .WriteTo.Logger(lc => lc
                                .Filter.ByIncludingOnly(e =>
                                    e.Level is LogEventLevel.Warning or LogEventLevel.Error or LogEventLevel.Fatal)
                                .WriteTo.File(new ElasticsearchJsonFormatter(), logFileErrors,
                                    fileSizeLimitBytes: 10485760L, rollingInterval: RollingInterval.Month,
                                    rollOnFileSizeLimit: true, retainedFileCountLimit: 5))
                            .WriteTo.Logger(lc => lc
                                .Filter.ByIncludingOnly(e => e.Level is LogEventLevel.Information).Filter
                                .ByIncludingOnly(Matching.WithProperty("RequestId"))
                                .WriteTo.File(new ElasticsearchJsonFormatter(), logFile, fileSizeLimitBytes: 10485760L,
                                    rollingInterval: RollingInterval.Month, rollOnFileSizeLimit: true, retainedFileCountLimit: 5))
                            .WriteTo.Logger(lc => lc
                                .Filter.ByExcluding(Matching.WithProperty("RequestId"))
                                .WriteTo.File(new ElasticsearchJsonFormatter(), logFileStartUp)))
                    .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
            }
    

    【讨论】:

      猜你喜欢
      • 2015-11-13
      • 2014-05-11
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多