Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.Net Core 2.2中为ILoggingBuilder创建配置扩展?_C#_.net_Logging_Asp.net Core - Fatal编程技术网

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

C# 如何在ASP.Net Core 2.2中为ILoggingBuilder创建配置扩展?,c#,.net,logging,asp.net-core,C#,.net,Logging,Asp.net Core,我使用Asp.NETCore2.2,需要登录文件。并尝试使用iLogger工厂: loggerFactory.AddProvider(new MyOwnFileLogProvider()); 但是: 好的,拒绝所有工厂和使用: WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseConfiguration(config)

我使用Asp.NETCore2.2,需要登录文件。并尝试使用iLogger工厂:

 loggerFactory.AddProvider(new MyOwnFileLogProvider());
但是:

好的,拒绝所有工厂和使用:

WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseConfiguration(config)
                .UseKestrel()
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.AddConsole();
                });

记录器工厂方法被弃用,取而代之的是更新的日志生成器,它完全方便了依赖项注入容器。不过,为自己的记录器提供程序创建记录器生成器扩展并不困难

您基本上只需要向服务集合添加一个
ilogger提供者

public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
    builder.Services.AddSingleton<ILoggerProvider, CustomLoggerProvider>();

    return builder;
}

这将使其用法与使用iLogger工厂的用法非常相似,目前还不清楚您到底想要什么。扩展名方法AddFile的签名?可拓方法的实现?如果您只需要登录到文件,请尝试使用或之类的日志框架
logging.AddFile();
public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
    builder.Services.AddSingleton<ILoggerProvider, CustomLoggerProvider>();

    return builder;
}
public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
    builder.AddProvider(new CustomLoggerProvider>());

    return builder;
}