Читаем Язык программирования C#9 и платформа .NET5 полностью

using AutoLot.Services.Logging;

Модифицируйте метод CreateHostBuilder в обоих проектах, как показано ниже:

public static IHostBuilder CreateHostBuilder(string[] args) =>

  Host.CreateDefaultBuilder(args)

      .ConfigureWebHostDefaults(webBuilder =>

      {

        webBuilder.UseStartup;

       }).ConfigureSerilog;

<p id="AutBody_Root1403"><strong>Обновление Startup.cs</strong></p>

Добавьте в файлы Startup.cs в проектах AutoLot.Api и AutoLot.Mvc следующий оператор using:

using AutoLot.Services.Logging;

Затем необходимо поместить новые интерфейсы ведения журнала в контейнер DI. Добавьте в метод ConfigureServices в обоих проектах такой код:

services.AddScoped(typeof(IAppLogging<>), typeof(AppLogging<>));

<p id="AutBody_Root1404"><strong>Обновление контроллера</strong></p>

Следующее обновление связано с заменой ссылок на ILogger ссылками на IAppLogging. Начните с класса WeatherForecastController в проекте AutoLot.Api. Добавьте в класс следующий оператор using:

using AutoLot.Services.Logging;

Далее измените ILogger на IAppLogging:

[ApiController]

[Route("[controller]")]

public class WeatherForecastController : ControllerBase

{

  ...

  private readonly IAppLogging _logger;

  public WeatherForecastController(IAppLogging logger)

  {

    _logger = logger;

  }

  ...

}

Теперь модифицируйте HomeController в проекте AutoLot.Mvc. Добавьте в класс следующий оператор using:

using AutoLot.Services.Logging;

Измените ILogger на IAppLogging:

[Route("[controller]/[action]")]

public class HomeController : Controller

{

  private readonly IAppLogging _logger;

  public HomeController(IAppLogging logger)

  {

    _logger = logger;

  }

  ...

}

После этого регистрация в журнале выполняется в каждом контроллере простым обращением к средству ведения журнала, например:

// WeatherForecastController.cs (AutoLot.Api)

[HttpGet]

public IEnumerable Get

{

  _logger.LogAppWarning("This is a test");

  ...

}

// HomeController.cs (AutoLot.Mvc)

[Route("/")]

[Route("/[controller]")]

[Route("/[controller]/[action]")]

[HttpGet]

public IActionResult Index

{

  _logger.LogAppWarning("This is a test");

  return View;

}

<p id="AutBody_Root1405"><strong>Испытание инфраструктуры ведения журнала</strong></p>

Имея установленную инфраструктуру Serilog, самое время протестировать ведение журналов для приложений. Если вы используете Visual Studio, тогда укажите AutoLot.Mvc в качестве стартового проекта (щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer, выберите в контекстном меню пункт Set as Startup Project (Установить как стартовый проект) и щелкните на кнопке запуска с зеленой стрелкой или нажмите <F5>). В случае работы в VS Code откройте окно терминала (<Ctrl+'>), перейдите в каталог AutoLot.Mvc и введите команду dotnet run.

В Visual Studio автоматически запустится браузер с представлением Home/Index. Если вы применяете VS Code, то вам понадобится открыть браузер и перейти по ссылке https://localhost:5001. После загрузки вы можете закрыть браузер, поскольку обращение к средству ведения журнала произошло при загрузке домашней страницы. Закрытие браузера в случае использования Visual Studio останавливает отладку. Чтобы остановить отладку в VS Code, нажмите <Ctrl+C> в окне терминала.

В каталоге проекта вы увидите файл по имени ErrorLogГГГMMДД.txt, в котором обнаружите запись, похожую на показанную ниже:

[ГГ-ММ-ДД чч:мм:сс Warning]AutoLot.Mvc -

  Dev:AutoLot.Mvc.Controllers.HomeController

Message:This is a test

in method Index at

D:\Projects\Books\csharp9-wf\Code\New\Chapter_29\AutoLot.Mvc\Controllers\

HomeController.cs:30

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT