ASP.NET Core 2.0 日志配置

时间:2022-06-01 14:14:32

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来配置。如上面的示例。