以前我可以使用LoggerFactory
,但现在它被标记为过时了。
我该如何访问ILoggingBuilder
并在Main
方法开始时创建日志记录器实例?我想使用内置的日志记录器,而不是任何第三方日志库。
以前我可以使用LoggerFactory
,但现在它被标记为过时了。
我该如何访问ILoggingBuilder
并在Main
方法开始时创建日志记录器实例?我想使用内置的日志记录器,而不是任何第三方日志库。
要得到你想要的,你必须编辑CreateWebHostBuilder方法:
public static IWebHost CreateWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole(); // Or any other provider
}).Build();
public static void Main(string[] args)
{
var host = CreateWebHost(args);
try
{
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("Called from Main");
host.Run();
}
catch (Exception)
{
// do something
}
}
要在启动中使用日志记录,您仍然可以使用ILoggerFactory:
private ILoggerFactory _loggerFactory;
public Startup(IConfiguration configuration, ILoggerFactory loggerFactory)
{
Configuration = configuration;
_loggerFactory = loggerFactory;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
try
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
catch (Exception ex)
{
var logger = _loggerFactory.CreateLogger("Startup");
// log
throw;
}
}