Asp.net-Core

解決錯誤 - 無法解析“Serilog.ILogger”類型的服務

  • November 20, 2016

我正在嘗試在 ASP.NET 核心應用程序(.NET 框架)中實現 SeriLog

以下是我到目前為止執行的步驟-

  1. 在 Project.json 中添加以下引用
"Serilog": "2.2.0",
"Serilog.Extensions.Logging": "1.2.0",
"Serilog.Sinks.RollingFile": "2.0.0",
"Serilog.Sinks.File": "3.0.0"
  1. 在 Startup 類的建構子中添加了以下幾行 -
Log.Logger = new LoggerConfiguration()
          .MinimumLevel.Debug()
          .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "log-{Date}.txt"))
          .CreateLogger();
  1. 在 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;
   }

引用自:https://stackoverflow.com/questions/40701230