Как зарегистрировать ILogger в автозагрузке

У меня есть раздел регистрации в json настройки:

      {
    "logging": {
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true,
                "excludedTypes": "Request"
            }
        }
    }
}

Мне нужно зарегистрировать его, чтобы иметь возможность использовать в обработчиках.

До сих пор я пробовал разные варианты, но ни один из них не работает:

Опция 1

          builder.Services.AddApplicationInsightsTelemetry(); // returns error: IServicesCollection does not contain a definition for AddApplicationInsightsTelemetry 

Вариант 1 Обновление

я добавил Microsoft.ApplicationInsights.AspNetCore к проекту так AddApplicationInsightsTelemetry теперь доступен, но все еще дает null.

Вариант 2

          builder.Services.AddLogging(logging =>
    {
        logging.AddConfiguration(hostingContext.GetSection("logging"));
    }); // ILogger is null in handler

но не могу найти никакой информации по моему конкретному случаю

Как зарегистрироваться ILogger в Startup что будет продолжать использовать настройки из моего приложения json?

Это обработчик, который я использую:

      public class ExampleHandler : IRequestHandler<ExampleQuery, bool>
{
    private readonly ILogger _log;

    public ExampleHandler(ILogger log)
    {
        _log = log;
    }

    public async Task<bool> Handle(ExampleQuery request, CancellationToken cancellationToken)
    {
        // _log is null here;

        return true;
    }
}

1 ответ

  1. УстановитьMicrosoft.ApplicationInsights.AspNetCoreпакет NuGet

  2. Разрешить типизированный регистратор:

      public class ExampleHandler : IRequestHandler<ExampleQuery, bool>
{
    private readonly ILogger<ExampleHandler> _log;

    public ExampleHandler(ILogger<ExampleHandler> log)
    {
        _log = log;
    }
    ...
}