ASP.NET Core 2.0的日志系统做了break change的升级。.NET Core 2.0日志配置的改变主要体现在三点:
- 使用新的方法AddLogging和Builder API配置services
- 允许在Program.cs使用WebHostBuilder配置日志
- ASP.NET Core 2.0模板里的WebHost提供了默认配置
使用新的方法AddLogging和Builder API配置services
在1.x版本里配置日志需要在Startup.cs里使用Configure来配置,2.0则使用了services新的方法AddLogging和Builder API来配置services,如:
services.AddLogging(builder => builder
.AddConsole()
.AddDebug();
允许在Program.cs使用WebHostBuilder配置日志
1.x是在Startup.cs里配置日志,2.0则允许在Program.cs使用WebHostBuilder配置日志。这样做的好处是可以让Startup.cs聚焦于services的配置和中间件的pipeline。
var builder = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
});
ASP.NET Core 2.0模板里的WebHost提供了默认配置
WebHost会类似上面的例子配置日志。如果指向使用Console和Debug的日志,就不需要添加额外的代码,如:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLoggin(logging => logging.AddEventLog())
.Build();
如果想添加别的ILoggerProviders,可以使用ConfigureLogging来配置。如上面的示例。