Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
<b> "schema": "Logging",</b>
<b> "tableName": "SeriLogs",</b>
<b> "restrictedToMinimumLevel": "Warning"</b>
<b> }</b>
},
"RebuildDataBase": false,
<b> "ApplicationName": "AutoLot.Api - Prod",</b>
"ConnectionStrings": {
"AutoLot": "It's a secret"
}
}
Обновление Program.cs
Добавьте в файлы Program.cs в проектах
AutoLot.Api
AutoLot.Mvc
using
using AutoLot.Services.Logging;
Модифицируйте метод
CreateHostBuilder()
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).ConfigureSerilog();
Обновление Startup.cs
Добавьте в файлы
Startup.cs
AutoLot.Api
AutoLot.Mvc
using
using AutoLot.Services.Logging;
Затем необходимо поместить новые интерфейсы ведения журнала в контейнер DI. Добавьте в метод
ConfigureServices()
services.AddScoped(typeof(IAppLogging<>), typeof(AppLogging<>));
Обновление контроллера
Следующее обновление связано с заменой ссылок на
ILogger
IAppLogging
WeatherForecastController
AutoLot.Api
using
using AutoLot.Services.Logging;
Далее измените
ILogger<T>
IAppLogging<T>
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
...
private readonly <b>IAppLogging</b><WeatherForecastController> _logger;
public WeatherForecastController(<b>IAppLogging</b><WeatherForecastController> logger)
{
_logger = logger;
}
...
}
Теперь модифицируйте
HomeController
AutoLot.Mvc
using
using AutoLot.Services.Logging;
Измените
ILogger<T>
IAppLogging<T>
[Route("[controller]/[action]")]
public class HomeController : Controller
{
private readonly <b>IAppLogging</b><HomeController> _logger;
public HomeController(<b>IAppLogging</b><HomeController> logger)
{
_logger = logger;
}
...
}
После этого регистрация в журнале выполняется в каждом контроллере простым обращением к средству ведения журнала, например:
// WeatherForecastController.cs (AutoLot.Api)
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
<b> _logger.LogAppWarning("This is a test");</b>
...
}
// HomeController.cs (AutoLot.Mvc)
[Route("/")]
[Route("/[controller]")]
[Route("/[controller]/[action]")]
[HttpGet]
public IActionResult Index()
{
<b> _logger.LogAppWarning("This is a test");</b>
return View();
}
Испытание инфраструктуры ведения журнала
Имея установленную инфраструктуру Serilog, самое время протестировать ведение журналов для приложений. Если вы используете Visual Studio, тогда укажите
AutoLot.Mvc
AutoLot.Mvc
dotnet run