2017-08-30 41 views
3

@nblumhardtpost地圖ILogger到Serilog的記錄器ASP.NET的Core 2採伐更新後

然後,您可以繼續,並刪除掛在任何其他記錄器配置:沒有必要爲一個「記錄「appsettings.json中的部分,任何地方都沒有AddLogging(),也沒有通過Startup.cs中的ILoggerFactory進行配置。

當我的控制器中有using Serilog;和​​時,我收到一個異常。

private readonly ILogger _logger; 

public CustomersController(ILogger logger) 
{ 
    _logger = logger; 
} 

結果:

未處理的異常而處理請求時。
InvalidOperationException:嘗試激活「Customers.Api.Controllers.CustomersController」時無法解析類型爲「Serilog.ILogger」的服務。

我還需要在Startup.ConfigureServices()方法中向DI提供一些信息嗎?

據我所知,我的程序類遵循了帖子中的說明。從ILogger loggerILogger<CustomersController>記錄

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .MinimumLevel.Override("Microsoft", LogEventLevel.Information) 
      .Enrich.FromLogContext() 
      .WriteTo.Console() 
      .CreateLogger(); 

     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .UseSerilog() 
      .Build(); 
} 

回答

1

更改預計類型:

private readonly ILogger _logger; 

public CustomersController(ILogger<CustomersController> logger) 
{ 
    _logger = logger; 
} 
+0

謝謝。我重置我的編輯來測試它,它工作。我們知道爲什麼嗎? :-) – leon

+1

@leon調查[爲什麼ASP.NET核心DI知道如何解決ILogger ,但不是ILogger?](https://stackoverflow.com/questions/38255053/why-asp-net-core-di-也不知道的是如何對解決-iloggert,但並非ilogger) – Set