在Asp.Net Core中使用Logger是一种推荐的日志记录方式。但是,在某些情况下,我们可能会从IServiceProvider
中获取Logger时遇到问题。这通常是因为我们没有正确配置Logger服务或ServiceProvider中没有为Logger服务提供正确的实例。
以下是解决此问题的示例代码:
首先,应确保已将ILogger服务添加到服务集合中并正确配置,例如在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddLogging(builder =>
{
builder.AddConfiguration(Configuration.GetSection("Logging"));
builder.AddConsole();
});
然后,我们可以使用IServiceCollection.BuildServiceProvider()
方法创建ServiceProvider并从中获取Logger:
var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetService>();
如果您已经在应用程序中使用了ILogger,可以直接从Dependency Injection中请求ILogger实例:
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILogger logger)
{
_logger = logger;
}
}
以上示例代码中,ILogger
的类型参数可以是任何你想要记录的类的名称。