2017-10-18 19 views
2

Je veux créer un cadre de journalisation dans mon projet asp.net MVC 5. Ma classe de démarrage ressemble à ceci:Puis-je utiliser ILoggerFactory dans le projet ASP.NET MVC 5 (pas mvc core)?

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     ConfigureAuth(app); 
    } 
} 

Cependant, quand je regarde projet ASP.Net MVC base, la classe de démarrage est comme ceci:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

Est-il possible d'inclure ILoggerFactory dans MVC 5 ? Si c'est possible, comment dois-je l'initialiser/l'enregistrer? Est-ce quelque chose qui doit être fait dans global.asax ou Startup?

Répondre

2

Tous les types Microsoft.Extensions.*, y compris le système de journalisation, sont utilisables en dehors de ASP.NET Core. En fait, ils sont utilisés dans Entity Framework Core, qui ne fait pas partie d'ASP.NET Core.

Pour l'utiliser dans n'importe quelle application, juste new les types que vous devez utiliser et commencer à les appeler - il n'y a rien de magique à ce sujet. Et, bien sûr, parce que ce n'est pas dans une application ASP.NET Core, vous n'obtenez pas l'injection de dépendance automatique (DI) (parce que ASP.NET Core est ce qui le câline).

Dans le cas présent, il est probablement plus simple d'utiliser LoggerFactory directement et toutes les API qui en découlent.

En fait, si vous regardez les tests unitaires pour la plupart des types Logging, ils ont un modèle qui est semblable à ce que vous feriez si vous n'utilisez DI:

https://github.com/aspnet/Logging/blob/9f642fd125b723b0cd3bbfd7d6bb58f7daee233f/test/Microsoft.Extensions.Logging.Test/LoggerTest.cs#L114-L120

ce code crée une usine de l'enregistreur, ajoute un fournisseur de l'enregistreur (vous pouvez utiliser la console, EventLog, coutume, etc.), puis enregistre un message d'information pour lui:

 var loggerFactory = new LoggerFactory(); 
     var logger = loggerFactory.CreateLogger("Test"); 

     loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store)); 

     // Act 
     logger.LogInformation("Hello"); 
0

Juste une note de côté ici, si vous utilisez Visual Studio 2015 ou inférieur, vous risquez d'avoir des problèmes alling Microsoft.Extensions.Logging Nuget paquet que ce paquet nécessite Nuget Version 4.3.0 ou plus ...

Pour installer Microsoft.Extensions.Logging vous devez installer: https://dist.nuget.org/visualstudio-2015-vsix/v3.6.0/NuGet.Tools.vsix sur Visual Studio 2015, ou mettre à jour vers Visual Studio 2017.

En outre, Microsoft.Extensions.Logging ne s'installe pas sur .Net 4.5, vous devez .Net 4.6.1 ou supérieur.