我读过this,但它是asp.net核心的。下面的代码是为非web控制台应用程序编写的。Visual告诉我,AddConsole(this ILoggerFactory,...)已经过时,必须由AddConsole(this ILoggingBuilder,...)替换。
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");
}
}问题
在上述情况下,如何将扩展方法AddConsole用于ILoggingBuilder而不是ILoggerFactory?
发布于 2019-03-15 20:18:38
您应该在CreateDefaultBuilder()上调用WebHost方法,如下所示。有关更多信息,请参见此https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2
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!!!");这也不太困难,您需要扩展ILoggerProvider并将您的自定义提供程序传递给记录器工厂,例如
new LoggerFactory().AddProvider(new CustomProvider());请参阅这篇带有彩色控制台日志记录https://asp.net-hacker.rocks/2017/05/05/add-custom-logging-in-aspnetcore.html的示例的博客文章。
发布于 2020-02-27 19:01:54
最短的是
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());https://stackoverflow.com/questions/55189961
复制相似问题