我使用Host创建了一个.NET Core 3.1项目,IoC容器与 IServiceCollection
并实现了各地的日志记录,使用的是 ILogger<T>
介面 Microsoft.Extensions.Logging
. 我现在需要实现更高级的日志记录,于是决定使用Serilog。
我有点以为从.NET内置的日志记录器切换到Serilog会很轻松。但令我惊讶的是,Serilog使用的是它自己的 ILogger
接口-----------------------无赖 所以现在我需要更新所有使用Serilog的地方。ILogger
或用.NET Core实现Serilog。ILogger<T>
接口。
我的问题是--是否真的不能在Serilog中使用ILogger接口?Microsoft.Extensions.Logging
? 会聪明多了!
在 Serilog.Extensions.Logging
集合体上有一个扩展方法 IloggingBuilder
叫做 AddSerilog
(它在Serilog命名空间中),将允许你使用Serilog进行日志记录。比如说
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddSerilog();
});
现在... ILogger
和 ILogger<>
实现将调用到Serilog。