如何在ASP.NET 5中访问记录器

时间:2016-01-07 03:06:29

标签: asp.net asp.net-core

建议的方法之一是使用依赖注入将记录器注入到类的构造函数中。 https://docs.asp.net/en/latest/fundamentals/logging.html

但是,如果我的类没有在DI容器中注册,或者我只是想为每个类创建一个静态记录器,那该怎么办呢?我怎样才能访问在Startup.cs中配置的LoggerFactory?

这就是我使用nlog做的方式:

private static readonly Logger _logger = LogManager.GetCurrentClassLogger();

1 个答案:

答案 0 :(得分:4)

您可以在Startup中定义一个静态属性,公开LoggerFactory

public class Startup
{
    public Startup(ILoggerFactory loggerFactory)
    {
        LoggerFactory = loggerFactory;
    }

    public static ILoggerFactory LoggerFactory { get; set; }

    public void ConfigureServices(IServiceCollection services)
    {
        //..
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //..
    }
}

然后在需要记录器的位置访问它:

public class MyClass
{
    private static readonly ILogger _log = Startup.LoggerFactory.CreateLogger<MyClass>();

    //..
}