如何将 Logger 传递给 ASP.NET 5.0 应用程序中的 Startup 类?

Pur*_*ome 5 c# logging .net-5

在ASP.NET 5.0中,我们现在可以定义一个工厂方法来控制Startup类的激活

在 Microsoft 提供的演示示例中,他们创建了一个记录器,然后将其传递到 Startup 类中:

public class Program
{
    public static async Task Main(string[] args)
    {
        var logger = CreateLogger(); // <--- HERE !!!!

        var host = Host.CreateDefaultBuilder()
            .ConfigureWebHost(builder =>
            {
                builder.UseStartup(context => new Startup(logger)); // Logger passed into the ctor
            })
            .Build();

        await host.RunAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定作者如何创建 Logger(即该方法中的代码),希望它是一个ILogger.

SO *_*ood 0

但是,我不确定作者如何创建 Logger(即该方法中的代码),希望它是一个ILogger.

和往常一样(幸运的是)。首先,创建并配置一个记录器工厂:

var loggerFactory = LoggerFactory.Create(builder => { /*configure*/ });
Run Code Online (Sandbox Code Playgroud)

然后,从中获取一个记录器:

var startupLogger = loggerFactory.CreateLogger<Startup>();
Run Code Online (Sandbox Code Playgroud)

上面只是一种方法,还有多种方法,既有内置的,也有使用多个第三方日志框架的。请阅读.NET Core 和 ASP.NET Core 中的日志记录主文档来了解更多信息。