26

我使用 Host 创建了一个 .NET Core 3.1 项目,该 IoC 容器IServiceCollection使用ILogger<T>来自Microsoft.Extensions.Logging. 我现在需要实现更高级的日志记录并决定使用 Serilog。

我认为从 .NET 内置记录器切换到 Serilog 会轻而易举。但令我惊讶的是,Serilog 使用的是它自己的ILogger界面 - 太糟糕了!所以现在我需要更新所有地方以使用 Serilog ,或者使用 .NET Core接口ILogger实现 Serilog 。ILogger<T>

我的问题是——真的不能在 ILogger 界面中使用 SerilogMicrosoft.Extensions.Logging吗?会聪明很多!

4

1 回答 1

34

在程序集中,调用Serilog.Extensions.Logging了一个扩展方法(它在 Serilog 命名空间中),它允许您使用 Serilog 进行日志记录。例如:IloggingBuilderAddSerilog

.NET Core 2.2 及更早版本(使用WebHost):

WebHost.CreateDefaultBuilder(args)
    .ConfigureLogging(logging =>
    {
        logging.ClearProviders();
        logging.AddSerilog();
    });

.NET Core 3.1 及更高版本(Host对 Web 或控制台应用程序使用泛型):

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>()})
    .UseSerilog();

现在ILoggerandILogger<>实现将调用 Serilog。

于 2020-05-01T14:14:45.427 回答