web-dev-qa-db-fra.com

Comment enregistrer ILogger pour l'injection dans ASP.NET MVC 6

J'ai une application ASP.NET MVC 6 (beta-4).

public void ConfigureServices(IServiceCollection services)
{
    // Logging
    services.AddLogging();

    // ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
    // Add the console logger.
    loggerfactory.AddConsole(minLevel: LogLevel.Warning);

    // ...
}

Et j'ai un contrôleur ...

public class HomeController : 
    Controller
{
    ILogger _logger;

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

    // ...
}

Mais quand je n'obtiens pas le service correctement enregistré d'une manière ou d'une autre: InvalidOperationException: Unable to resolve service for type 'Microsoft.Framework.Logging.ILogger' while attempting to activate 'HomeController'.. Que fais-je de mal avec l'enregistrement de l'enregistreur?

36
Travis

La services.AddLogging(); n'a pas fonctionné pour moi, j'ai donc ajouté ces deux instructions à ConfigureServices:

services.AddSingleton<ILoggerFactory, LoggerFactory>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));

Maintenant, le conteneur DI est heureux et tout fonctionne.

7
rubito