在 Net 6 中使用 WebApplicationBuilder 配置 Serilog

Mig*_*ura 6 serilog asp.net-core asp.net-core-6.0 .net-6.0

我在 Net Core 5 中使用推荐的方法配置 Serilog:

public static void Main(string[] args) {

  Log.Logger = new LoggerConfiguration().WriteTo.Console().CreateLogger();
    
  try {
    Log.Information("Starting up");
    CreateHostBuilder(args).Build().Run();
  }
  catch (Exception ex) {
    Log.Fatal(ex, "Application start-up failed");
  }
  finally {
    Log.CloseAndFlush();
  }

}

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
    .UseSerilog() 
    .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
Run Code Online (Sandbox Code Playgroud)

如何使用以下命令在 Net 6 中配置 Serilog WebApplicationBuilder

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog

var app = builder.Build();
Run Code Online (Sandbox Code Playgroud)

Kah*_*azi 10

您仍然可以在 上使用相同的扩展方法Host

using Serilog;

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog();

var app = builder.Build();
Run Code Online (Sandbox Code Playgroud)


小智 6

扩展一下卡巴齐的答案:

如果要使用 appsetting.json 文件进行配置,则需要安装 Nuget 包 Serilog.AspNetCore 并将以下代码放入 Program.cs 中:

using Serilog;

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((hostContext, services, configuration) =>
{
    configuration.ReadFrom.Configuration(hostContext.Configuration);
});

// ...

var app = builder.Build();

// ...

app.Run();
Run Code Online (Sandbox Code Playgroud)

appsettings.json 中的代码:

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console" ],
    "MinimumLevel": "Verbose",
    "Enrich": [ "FromLogContext" ],
    "WriteTo": [
      {
        "Name": "Console"
      }
    ]
  },
 "YourCustomConfigKey1": "blahblah",
 "YourCustomConfigKey2": "asdf"
}
Run Code Online (Sandbox Code Playgroud)