Задайте максимальное количество файлов прокрутки Serilog

Я хочу знать, можно ли установить максимальное количество просматриваемых файлов?

Я хочу это сделать, чтобы мне не нужно было создавать задание для очистки старых файлов журналов. Журналы за последний месяц подойдут.

Это моя текущая конфигурация

              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>(); });
        }

1 ответ

Это оказалось очень простой задачей. Используйте restedFileCountLimit. Код ниже показывает, как это используется.

              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>(); });
        }
Другие вопросы по тегам