我使用Asp .NET Core 2.2,需要登录文件。并尝试使用ILoggerFactory:
loggerFactory.AddProvider(new MyOwnFileLogProvider());
但是:
loggerFactory.AddConsole();//This method is obsolete and will be removed in a future version.
好,拒绝所有工厂并使用:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseConfiguration(config)
.UseKestrel()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
});
如何为ILoggingBuilder创建配置扩展名以进行文件记录?
logging.AddFile();
答案 0 :(得分:1)
不赞成使用logger工厂方法,而希望使用较新的日志记录构建器,该构建器完全简化了依赖项注入容器。为您自己的记录器提供商创建记录器构建器扩展并不难。
您基本上只需要向服务集合中添加ILoggerProvider
:
public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
builder.Services.AddSingleton<ILoggerProvider, CustomLoggerProvider>();
return builder;
}
您也可以直接注册实例,而不是通过依赖注入来解析提供程序。还有一个内置扩展方法AddProvider
可以做到这一点。因此,您也可以使用它:
public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
builder.AddProvider(new CustomLoggerProvider>());
return builder;
}
这应该使用法与使用ILoggerFactory
的用法非常相似。