Как зарегистрировать 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 ответ
Установить
Microsoft.ApplicationInsights.AspNetCore
пакет NuGetРазрешить типизированный регистратор:
public class ExampleHandler : IRequestHandler<ExampleQuery, bool>
{
private readonly ILogger<ExampleHandler> _log;
public ExampleHandler(ILogger<ExampleHandler> log)
{
_log = log;
}
...
}