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



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

然而,如果我的类没有在DI容器中注册,或者我只想为每个类创建一个静态记录器,该怎么办。我如何仍然可以访问在Startup.cs中配置的LoggerFactory?

这就是我使用nlog:的方式

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

您可以在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>();
    //..
}

最新更新