主机时使用serilog记录错误。导致 .net 6 顶级语句 program.cs 崩溃

问题描述 投票:0回答:1

我们在.net 6控制台应用程序中使用serilog。下面的代码是示例program.cs。当主机崩溃时,我们如何在配置的记录器中捕获异常?

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;

IHost host = Host.CreateDefaultBuilder(args)
    .UseSerilog((ctx, lc) => lc
    .ReadFrom.Configuration(ctx.Configuration))
    .ConfigureServices((context, services) =>
    {
        services.AddHostedService<Worker>();
    })
    .Build();
try
{
   await host.RunAsync();
}
catch(Exception ex)
{
   // Need to log the error
   // 
   throw;
}
serilog
1个回答
0
投票

可以提供日志吗?

你可以试试这个

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                    .ConfigureLogging((hostingContext, config) =>
                    {
                        config.AddSerilog(new LoggerConfiguration().ReadFrom.Configuration(hostingContext.Configuration).CreateLogger());
                    })
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseStartup<Startup>()
                    .UseWebRoot("wwwroot");
            });
}
© www.soinside.com 2019 - 2024. All rights reserved.