Как добавить ведение журнала в серверный компонент Blazor? - PullRequest
3 голосов
/ 24 апреля 2019

Я пытаюсь создать размещенное приложение ASP.net Blazor и пытаюсь подключить регистратор к моему контроллеру.

У меня есть это:

public MyController(ILogger logger) {
    _logger = logger;
    // more initialization
}

Но когда я запускаю его, я получаю:

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'MyApp.Server.Controllers.MyController'.

Поскольку прокручивается множество сообщений журнала, я думаю, Blazor уже инициализирует регистратор.

Как мне получить доступ к этому?

1 Ответ

5 голосов
/ 24 апреля 2019

Неуниверсальный ILogger не зарегистрирован в коллекции услуг. Вместо этого вы должны ввести общий ILogger<T>. Аргумент общего типа T используется для установки имени категории , которое связано с экземпляром регистратора. Позволяет легко увидеть, откуда поступил вызов журнала.

Обычно вы указываете тип, с которым вы используете регистратор, в качестве аргумента универсального типа. Так что в вашем случае вы бы использовали ILogger<MyController>:

public MyController(ILogger<MyController> logger)
{
    _logger = logger;
}

Обратите внимание, что в этом поведении нет ничего особенного для сервера Blazor. Это стандартный ASP.NET Core, а контроллер также является обычным контроллером ASP.NET Core.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...