建议的方法之一是使用依赖注入将记录器注入到类的构造函数中。 https://docs.asp.net/en/latest/fundamentals/logging.html
但是,如果我的类没有在DI容器中注册,或者我只是想为每个类创建一个静态记录器,那该怎么办呢?我怎样才能访问在Startup.cs中配置的LoggerFactory?
这就是我使用nlog做的方式:
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
答案 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>();
//..
}