如何在ASP .Net Core 2.2中为ILoggingBuilder创建配置扩展名?

时间:2019-04-24 12:49:19

标签: c# .net logging asp.net-core

我使用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();

1 个答案:

答案 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的用法非常相似。