C# 如何使用iLogger Builder的扩展方法代替iLogger工厂?
我已经读过了,但它是针对asp.net核心的。我下面的代码是针对非网络控制台应用程序的。Visual Studio告诉我,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
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());