2017-10-18 58 views
2

我想在我的asp.net MVC 5項目中創建一個日誌框架。我的啓動類看起來是這樣的:我可以在ASP.NET MVC 5(不是mvc core)項目中使用ILoggerFactory嗎?

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

但是,當我看着ASP.Net MVC核心項目,啓動類是這樣的:

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

是否有可能包括ILoggerFactory在MVC 5 ?如果這是可能的,我應該如何初始化/註冊它?是否需要在global.asax或Startup中完成?

回答

2

所有Microsoft.Extensions.*類型,包括記錄系統的,是ASP.NET核心之外使用。實際上,它們用於實體框架核心,它不屬於ASP.NET核心。

在任何應用程序中使用它,只是new了你需要使用,並開始打電話給他們的類型 - 有什麼神奇之處。當然,因爲它不在ASP.NET核心應用程序中,所以你不會得到自動的依賴注入(DI)(因爲ASP.NET Core就是這樣的線程)。

在這裏的情況下,它可能是最簡單直接使用LoggerFactory和所有來自這些API。

事實上,如果你看一下單元測試的許多記錄的類型,他們有一個模式不使用時,它類似於你會做什麼DI:

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

該代碼創建一個記錄器工廠,增加了一個記錄器供應商(可以使用控制檯,事件日誌,自定義等),然後將記錄信息消息吧:這裏

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

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

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

只是一個側面說明,如果你使用的是Visual Studio 2015或更低版本,您可能會遇到問題阿靈Microsoft.Extensions.Logging NuGet包,因爲這需要包版本的NuGet 4.3.0或更高...

爲了安裝Microsoft.Extensions.Logging您需要安裝:https://dist.nuget.org/visualstudio-2015-vsix/v3.6.0/NuGet.Tools.vsix上的Visual Studio 2015年,或升級到Visual工作室2017年

此外,Microsoft.Extensions.Logging不會在.NET 4.5安裝,您需要的.Net 4.6.1或更高版本。

相關問題