Задайте максимальное количество файлов прокрутки 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>(); });
}