解決錯誤 - 無法解析“Serilog.ILogger”類型的服務
我正在嘗試在 ASP.NET 核心應用程序(.NET 框架)中實現 SeriLog
以下是我到目前為止執行的步驟-
- 在 Project.json 中添加以下引用
"Serilog": "2.2.0", "Serilog.Extensions.Logging": "1.2.0", "Serilog.Sinks.RollingFile": "2.0.0", "Serilog.Sinks.File": "3.0.0"
- 在 Startup 類的建構子中添加了以下幾行 -
Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "log-{Date}.txt")) .CreateLogger();
- 在 Startup 類的配置方法中添加了以下行-
loggerFactory.AddSerilog();4)像這樣將記錄器注入 HomeController -
ILogger logger; public HomeController(ILogger logger) { this.logger = logger; }5)在關於操作中,嘗試像這樣記錄異常-
public IActionResult About() { ViewData["Message"] = "Your application description page."; try { throw new Exception("Serilog Testing"); } catch (System.Exception ex) { this.logger.Error(ex.Message); } return View(); }在執行我的應用程序時,我遇到了錯誤-
System.InvalidOperationException:嘗試啟動“AspNetCore_SeriLog_trial1.Controllers.HomeController”時無法解析“Serilog.ILogger”類型的服務。在 Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp,類型類型,類型 requiredBy,布爾 isDefaultParameterRequired)
在 lambda_method(Closure , IServiceProvider , Object[] ) 在 Microsoft.AspNetCore.Mvc.Internal.TypeActivatorCache.CreateInstance[TInstance](IServiceProvider serviceProvider, Type implementationType) 在 Microsoft.AspNetCore.Mvc.Controllers.DefaultControllerActivator.Create(ControllerContext controllerContext) 在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__26.MoveNext() 上的 Microsoft.AspNetCore.Mvc.Controllers.DefaultControllerFactory.CreateController(ControllerContext context)
有人可以幫我嗎?Serilog 缺少任何配置嗎?
嘗試在您的控制器中執行以下操作。
ILogger<HomeController> logger = null; public HomeController(ILogger<HomeController> _logger) { logger = _logger; }