2017-10-18 69 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或更高版本。

相关问题