Литмир - Электронная Библиотека
A
A

<b>      &quot;schema&quot;: &quot;Logging&quot;,</b>

<b>      &quot;tableName&quot;: &quot;SeriLogs&quot;,</b>

<b>      &quot;restrictedToMinimumLevel&quot;: &quot;Warning&quot;</b>

<b>    }</b>

  },

  &quot;RebuildDataBase&quot;: false,

<b>  &quot;ApplicationName&quot;: &quot;AutoLot.Api - Prod&quot;,</b>

  &quot;ConnectionStrings&quot;: {

    &quot;AutoLot&quot;: &quot;It's a secret&quot;

  }

}

Обновление Program.cs

Добавьте в файлы Program.cs в проектах

AutoLot.Api
и
AutoLot.Mvc
следующий оператор
using
:

using AutoLot.Services.Logging;

Модифицируйте метод

CreateHostBuilder()
в обоих проектах, как показано ниже:

public static IHostBuilder CreateHostBuilder(string[] args) =&gt;

  Host.CreateDefaultBuilder(args)

      .ConfigureWebHostDefaults(webBuilder =&gt;

      {

        webBuilder.UseStartup&lt;Startup&gt;();

       }).ConfigureSerilog();

Обновление Startup.cs

Добавьте в файлы

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

using AutoLot.Services.Logging;

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

ConfigureServices()
в обоих проектах такой код:

services.AddScoped(typeof(IAppLogging&lt;&gt;), typeof(AppLogging&lt;&gt;));

Обновление контроллера

Следующее обновление связано с заменой ссылок на

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

using AutoLot.Services.Logging;

Далее измените

ILogger&lt;T&gt;
на
IAppLogging&lt;T&gt;
:

[ApiController]

[Route(&quot;[controller]&quot;)]

public class WeatherForecastController : ControllerBase

{

  ...

  private readonly <b>IAppLogging</b>&lt;WeatherForecastController&gt; _logger;

  public WeatherForecastController(<b>IAppLogging</b>&lt;WeatherForecastController&gt; logger)

  {

    _logger = logger;

  }

  ...

}

Теперь модифицируйте

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

using AutoLot.Services.Logging;

Измените

ILogger&lt;T&gt;
на
IAppLogging&lt;T&gt;
:

[Route(&quot;[controller]/[action]&quot;)]

public class HomeController : Controller

{

  private readonly <b>IAppLogging</b>&lt;HomeController&gt; _logger;

  public HomeController(<b>IAppLogging</b>&lt;HomeController&gt; logger)

  {

    _logger = logger;

  }

  ...

}

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

// WeatherForecastController.cs (AutoLot.Api)

[HttpGet]

public IEnumerable&lt;WeatherForecast&gt; Get()

{

<b>  _logger.LogAppWarning(&quot;This is a test&quot;);</b>

  ...

}

// HomeController.cs (AutoLot.Mvc)

[Route(&quot;/&quot;)]

[Route(&quot;/[controller]&quot;)]

[Route(&quot;/[controller]/[action]&quot;)]

[HttpGet]

public IActionResult Index()

{

<b>  _logger.LogAppWarning(&quot;This is a test&quot;);</b>

  return View();

}

Испытание инфраструктуры ведения журнала

Имея установленную инфраструктуру Serilog, самое время протестировать ведение журналов для приложений. Если вы используете Visual Studio, тогда укажите

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

596
{"b":"847442","o":1}