using Elastic.CommonSchema.Serilog; using PARR.NextRun; using PARR.NextRunWorker; using Serilog; var builder = Host.CreateApplicationBuilder(); builder.Services.AddLogging(config => { config.ClearProviders(); var logger = new LoggerConfiguration(); if (builder.Environment.IsProduction()) logger.WriteTo.Console(new EcsTextFormatter()); else logger.WriteTo.Console(); logger.ReadFrom.Configuration(builder.Configuration); config.AddSerilog(logger.CreateLogger()); }); builder.Services.InstallNextRunServices(builder.Configuration); builder.Configuration.AddNextRunConfigurations(builder.Services); builder.Services.AddNextRunSettings(builder.Configuration); // Задается через переменные окружеия var runRabbit = builder.Configuration.GetValue("ENABLE_RABBIT", true); var runInterval = builder.Configuration.GetValue("ENABLE_INTERVAL", true); if (runRabbit) { builder.Services.AddHostedService(); } if (runInterval) { builder.Services.AddHostedService(); } // Настройка краша при ошибке. Если хоть один из воркеров упадет, то падает целиком проект builder.Services.Configure(options => { options.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.StopHost; }); var host = builder.Build(); host.Run();