代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

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

  •  0
  • Pure.Krome  · 技术社区  · 3 年前

    在ASP中。NET 5.0,我们现在可以 define a factory method for controlling the activation of the Startup class .

    在微软提供的演示示例中,他们创建了一个记录器,然后将其传递给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();
        }
    }
    

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

    0 回复  |  直到 3 年前
        1
  •  0
  •   halfer Rahul Baradia    3 年前

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

    一如既往(幸运的是)。首先,创建并配置记录器工厂:

    var loggerFactory = LoggerFactory.Create(builder => { /*configure*/ });
    

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

    var startupLogger = loggerFactory.CreateLogger<Startup>();
    

    以上只是一种方式,有多种方式,既有内置的,也有几个第三方日志框架。阅读更多主要内容 Logging in .NET Core and ASP.NET Core 文件。

        2
  •  -1
  •   Edd    3 年前

    你需要把它连接起来 配置日志记录 (命名空间: 微软。扩展。群众或部队的集合 )扩展名:

            private static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                .ConfigureLogging(builder =>
                {
                    builder.AddNLog(); //<-I used Nlog for demonstration purposes. This will take care things for you.
                    //builder.AddConsole();
                    //builder.AddDebug();
                })
                .ConfigureWebHostDefaults(builder =>
                {
                    builder.UseStartup<Startup>(); //<Startup class
                });
    

    通过构造函数使用依赖注入:

    private readonly ILoggerFactory loggerFactory;
    public Class1(ILoggerFactory loggerFactory)
    {
        this.loggerFactory = loggerFactory;
    }
    
    public SomeMethod(){
        var logger = loggerFactory.CreateLogger("Exception logger"); //<-You can call create logger here
    }
    
    • 我建议您首先决定要使用哪种日志框架,流行的日志记录器提供了丰富的文档,这将帮助您立即投入使用。