使用通用主机时,在 NetCore 中配置 Serilog 日志记录的首选方法是什么?

Fra*_*r23 5 c# logging serilog

如果您想在 NetCore 中使用 Serilog 和通用Host(或IHost),而不是 aWebHost或其他东西,应该如何配置 Serilog?

我发现有两个选项:

  1. .UseSerilog()从NuGet 包中使用Serilog.Extensions.Hosting
var host = Host.CreateDefaultBuilder()
                    .UseSerilog()
                    .UseSystemd()
                    .UseWindowsService()
                    .Build();
Run Code Online (Sandbox Code Playgroud)
  1. 使用NuGet 包中的.ConfigureLogging()和:.AddSerilog()Serilog
.ConfigureLogging(
    logging =>
    {
        logging.AddSerilog();
    });
Run Code Online (Sandbox Code Playgroud)

所以现在有两个问题:

  1. 两种选择都会导致相同的行为吗?如果不是,有什么区别?
  2. 应该优先使用哪种方法(或者它们是相同的并且您可以随意使用)?

Fra*_*r23 0

Serilog.AspNetCore(版本 5.0.0)开始,第二个选项被标记为已弃用,并且应使用通用主机选项(选项 1)。例如,使用网络主机构建器:

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