C# 如何使用iLogger Builder的扩展方法代替iLogger工厂?

C# 如何使用iLogger Builder的扩展方法代替iLogger工厂?,c#,.net-core,C#,.net Core,我已经读过了,但它是针对asp.net核心的。我下面的代码是针对非网络控制台应用程序的。Visual Studio告诉我,AddConsole(此iLogginFactory,…)已过时,必须由AddConsole(此iLogginBuilder,…)替换 类程序 { 静态void Main(字符串[]参数) { ILoggerFactory ilf=新LoggerFactory(); ilf.AddConsole(日志级别信息); ILogger logger=ilf.CreateLogger

我已经读过了,但它是针对asp.net核心的。我下面的代码是针对非网络控制台应用程序的。Visual Studio告诉我,
AddConsole(此iLogginFactory,…)
已过时,必须由
AddConsole(此iLogginBuilder,…)
替换

类程序
{
静态void Main(字符串[]参数)
{
ILoggerFactory ilf=新LoggerFactory();
ilf.AddConsole(日志级别信息);
ILogger logger=ilf.CreateLogger();
logger.LogError(“cpu过热”);
Console.WriteLine(“等待记录器打印”);
}
}
问题:
在上述情况下,如何使用
ilogingbuilder
的扩展方法
AddConsole
而不是
ILoggerFactory

您应该调用
WebHost
上的
CreateDefaultBuilder()
方法,如下所示。有关更多信息,请参见此

查看这篇博客文章,其中有一个很好的颜色控制台日志示例

最短的是

var loggerFactory=loggerFactory.Create(builder=>builder.AddConsole());

您的答案是针对asp.net,而不是针对非web控制台应用。它不会在控制台窗口上显示错误消息。
class Program
{
    static void Main(string[] args)
    {

        ILoggerFactory ilf = new LoggerFactory();
        ilf.AddConsole(LogLevel.Information);

        ILogger<Program> logger = ilf.CreateLogger<Program>();

        logger.LogError("the cpu is overheating");

        Console.WriteLine("waiting for logger to print");
    }
}
public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();
    var logger = host.Services.GetRequiredService<ILogger<Program>>();
    logger.LogInformation("the cpu is overheating");
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.AddConsole();
        });
ILogger<Program> logger = new Logger<Program>(new LoggerFactory());
logger.LogError("System is over heated!!!");
new LoggerFactory().AddProvider(new CustomProvider());