2016-11-20 23 views
7

Próbuję zaimplementować SeriLog w podstawowej aplikacji ASP.NET (.NET framework)błąd Rozwiązywanie - Nie można rozwiązać obsługę typu „Serilog.ILogger”

Poniżej są wykonywane kroki I tak daleko

1) Dodano poniżej odniesienia w Project.json

"Serilog": "2.2.0", 
"Serilog.Extensions.Logging": "1.2.0", 
"Serilog.Sinks.RollingFile": "2.0.0", 
"Serilog.Sinks.File": "3.0.0" 

2) Dodano następujące linie do konstruktora swoim starcie wykładowa

Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "log-{Date}.txt")) 
      .CreateLogger(); 

3) Dodano następującą linię do metody configure swojej Uruchomienie wykładowa

loggerFactory.AddSerilog(); 

4) Wstrzykiwanie rejestratora do HomeController jak to-

ILogger logger; 

    public HomeController(ILogger logger) 
    { 
     this.logger = logger; 
    } 

5) o działaniach, starając się zalogować wyjątek jak to-

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(); 
    } 

na prowadzeniu mojej aplikacji, otrzymuję poniżej ERROR-

System.InvalidOperationException: Nie można rozwiązać obsługę typu 'Serilog.ILogger' podczas próby aktywacji 'AspNetCore_SeriLog_trial1.Controllers.HomeController'. w Microsoft.Extensions.Internal.ActivatorUtilities.GetService (IServiceProvider sp, typ, typ requiredBy, logiczna isDefaultParameterRequired)
w lambda_method (zamknięcie, IServiceProvider, obiekt []) w Microsoft.AspNetCore.Mvc.Internal.TypeActivatorCache. CreateInstance [TInstance] (IServiceProvider serviceProvider, typ implementationType) w Microsoft.AspNetCore.Mvc.Controllers.DefaultControllerActivator.Create (controllerContext controllerContext) w Microsoft.AspNetCore.Mvc.Controllers.DefaultControllerFactory.CreateController (controllerContext kontekst) w Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__26.MoveNext()

Czy ktoś mógłby mi w tym pomóc? Jakiej konfiguracji brakuje w Serilogu?

Odpowiedz

12

Spróbuj wykonać następujące czynności w kontrolerze.

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

Próbowałem to jednak coraz błąd - 'Error \t CS0308 \t Non-generic type 'ILogger' nie może być używany z typem arguments' – Sanket

+2

używasz interfejsu ilogger Seri następnie spróbuj zastąpić go z interfejsem ilogger Microsoft, które obecny w bibliotece logowania. – dotnetstep

Powiązane problemy