.Net Core 3.1
На жаль, щодо ASP.NET Core 3.0 ситуація знову трохи інша. Шаблони за замовчуванням використовують HostBuilder(замість WebHostBuilder), який встановлює новий загальний хост, який може розміщувати кілька різних програм, не обмежуючись веб-програмами. Частиною цього нового хоста є також видалення другого контейнера для введення залежностей, який раніше існував для веб-хоста. Це в кінцевому рахунку означає, що ви не зможете вводити будь-які залежності крім класу IConfigurationв Startupклас. Таким чином, ви не зможете ввійти в систему під час ConfigureServicesметоду. Однак ви можете ввести реєстратор у Configureметод і ввійти туди:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Якщо вам абсолютно потрібно увійти в систему ConfigureServices, тоді ви можете продовжувати використовувати те, WebHostBuilderщо створить спадщину, WebHostяка може ввести реєстратор у Startupклас. Зауважте, що, швидше за все, веб-хост у певний момент буде видалено. Тож вам слід спробувати знайти рішення, яке вам підходить, без необхідності входити в систему ConfigureServices.
.NET Core 2.x
Це суттєво змінилось із виходом ASP.NET Core 2.0. У ASP.NET Core 2.x ведення журналу створюється у конструкторі хостів. Це означає, що ведення журналу за замовчуванням доступне через DI і може бути введено в Startupклас:
public class Startup
{
private readonly ILogger<Startup> _logger;
public IConfiguration Configuration { get; }
public Startup(ILogger<Startup> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
_logger.LogInformation("ConfigureServices called");
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
_logger.LogInformation("Configure called");
}
}