Logging 在Program.cs中登录

Logging 在Program.cs中登录,logging,asp.net-core,.net-core,asp.net-core-mvc,Logging,Asp.net Core,.net Core,Asp.net Core Mvc,可以在Program.cs Main方法中获取ILogger吗?我想将其传递给在该方法中创建的服务 我只在SO上发现了这个,但这是在Startup.cs中记录的。在谷歌搜索了一段时间后意外地发现了答案 使用系统; 使用Microsoft.Extensions.Logging; 命名空间控制台应用程序 { 公共课程 { 公共静态void Main(字符串[]args) { var logFactory=new LoggerFactory() .AddConsole(LogLevel.Debug)

可以在Program.cs Main方法中获取ILogger吗?我想将其传递给在该方法中创建的服务


我只在SO上发现了这个,但这是在Startup.cs中记录的。

在谷歌搜索了一段时间后意外地发现了答案

使用系统;
使用Microsoft.Extensions.Logging;
命名空间控制台应用程序
{
公共课程
{
公共静态void Main(字符串[]args)
{
var logFactory=new LoggerFactory()
.AddConsole(LogLevel.Debug)
.AddDebug();
var logger=logFactory.CreateLogger();
logger.LogInformation(“这是调试日志”);
}
}
}

这就是我如何在
Startup.cs
(在我的情况下是Log4Net)中配置
ILogger
接口的方法,该接口在
Program.cs
中工作:

publicstaticvoidmain(字符串[]args)
{
var host=BuildWebHost(args);
ILogger logger=host.Services.GetService();
尝试
{
logger.LogInformation(“启动web主机”);
host.Run();
}
捕获(例外情况除外)
{
LogCritical(例如,“启动web主机失败”);
}
}
  • 使用Microsoft.Extensions.DependencyInjection添加
    以便
    GetService
    中的泛型类型按预期工作

您可能应该查看一下,以便在应用程序的其余部分使用相同的记录器实例。@anserk不认为这是可能的,因为ILogger实例是泛型的(即,
ILogger
)。这不再适用于.NET Core 3.1及以上版本。