建议的方法之一是使用依赖注入将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>();
//..
}