логи поднастроены
This commit is contained in:
@@ -21,21 +21,14 @@ const string CorsPolicyName = "Frontend";
|
|||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Заменяет собой встроенных провайдеров логирования: все ILogger<T> в приложении
|
|
||||||
// (включая наши логи в ListPartitioning) идут через Serilog в оба синка ниже.
|
|
||||||
// ReadFrom.Configuration — чтобы Logging:LogLevel в appsettings продолжал работать
|
|
||||||
// как обычно, без второй, серилоговской системы настройки уровней рядом с ним.
|
|
||||||
builder.Host.UseSerilog((context, services, configuration) => configuration
|
builder.Host.UseSerilog((context, services, configuration) => configuration
|
||||||
.ReadFrom.Configuration(context.Configuration)
|
.ReadFrom.Configuration(context.Configuration)
|
||||||
.Enrich.FromLogContext()
|
.Enrich.FromLogContext()
|
||||||
.WriteTo.Console()
|
.WriteTo.Console()
|
||||||
// Один файл на календарный месяц (rollOnFileSizeLimit не включаем — ротация
|
|
||||||
// только по времени). retainedFileCountLimit: null — логи не подчищаются
|
|
||||||
// автоматически, ротацией места на диске занимается инфраструктура хоста.
|
|
||||||
.WriteTo.File(
|
.WriteTo.File(
|
||||||
"logs/log-.txt",
|
"logs/log-.txt",
|
||||||
rollingInterval: RollingInterval.Month,
|
rollingInterval: RollingInterval.Month,
|
||||||
retainedFileCountLimit: null));
|
retainedFileCountLimit: 6));
|
||||||
|
|
||||||
builder.Services.Configure<ForwardedHeadersOptions>(options =>
|
builder.Services.Configure<ForwardedHeadersOptions>(options =>
|
||||||
{
|
{
|
||||||
@@ -59,8 +52,6 @@ builder.Services.AddApprovalRouteApplication();
|
|||||||
builder.Services.Configure<RemindersOptions>(builder.Configuration.GetSection("Reminders"));
|
builder.Services.Configure<RemindersOptions>(builder.Configuration.GetSection("Reminders"));
|
||||||
builder.Services.Configure<ListPartitioningOptions>(builder.Configuration.GetSection("ListPartitioning"));
|
builder.Services.Configure<ListPartitioningOptions>(builder.Configuration.GetSection("ListPartitioning"));
|
||||||
|
|
||||||
// Hangfire на том же Postgres, что и остальные данные. Свои таблицы он создаёт сам
|
|
||||||
// (схема hangfire) при старте — отдельной EF-миграции для них не нужно.
|
|
||||||
builder.Services.AddHangfire(configuration => configuration
|
builder.Services.AddHangfire(configuration => configuration
|
||||||
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
|
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
|
||||||
.UseSimpleAssemblyNameTypeSerializer()
|
.UseSimpleAssemblyNameTypeSerializer()
|
||||||
@@ -68,8 +59,6 @@ builder.Services.AddHangfire(configuration => configuration
|
|||||||
.UsePostgreSqlStorage(postgres =>
|
.UsePostgreSqlStorage(postgres =>
|
||||||
postgres.UseNpgsqlConnection(builder.Configuration.GetConnectionString("Postgres"))));
|
postgres.UseNpgsqlConnection(builder.Configuration.GetConnectionString("Postgres"))));
|
||||||
|
|
||||||
// Воркер живёт в процессе API: задач мало (создание списка — редкое событие), и
|
|
||||||
// отдельный хост под них был бы лишней инфраструктурой.
|
|
||||||
builder.Services.AddHangfireServer();
|
builder.Services.AddHangfireServer();
|
||||||
builder.Services.AddApprovalRouteAuth(builder.Configuration);
|
builder.Services.AddApprovalRouteAuth(builder.Configuration);
|
||||||
builder.Services.AddScoped<ICurrentUser, CurrentUserAccessor>();
|
builder.Services.AddScoped<ICurrentUser, CurrentUserAccessor>();
|
||||||
@@ -126,9 +115,6 @@ app.UseCors(CorsPolicyName);
|
|||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
// Свой Basic Auth, а не схемы из AuthSetup: дашборд Hangfire открывается прямо в
|
|
||||||
// браузере без похода за токеном Entra, ему нужна отдельная, простая проверка.
|
|
||||||
// Логин/пароль — в конфигурации (Hangfire:Dashboard), см. appsettings.json.
|
|
||||||
app.UseHangfireDashboard("/hangfire", new DashboardOptions
|
app.UseHangfireDashboard("/hangfire", new DashboardOptions
|
||||||
{
|
{
|
||||||
Authorization =
|
Authorization =
|
||||||
|
|||||||
Reference in New Issue
Block a user