我可以在ASP.NET MVC 5(不是mvc core)项目中使用ILoggerFactory吗?
我想在我的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中完成?
所有Microsoft.Extensions.*
类型,包括记录系统的,是ASP.NET核心之外使用。实际上,它们用于实体框架核心,它不属于ASP.NET核心。
在任何应用程序中使用它,只是new
了你需要使用,并开始打电话给他们的类型 - 有什么神奇之处。当然,因为它不在ASP.NET核心应用程序中,所以你不会得到自动的依赖注入(DI)(因为ASP.NET Core就是这样的线程)。
在这里的情况下,它可能是最简单直接使用LoggerFactory
和所有来自这些API。
事实上,如果你看一下单元测试的许多记录的类型,他们有一个模式不使用时,它类似于你会做什么DI:
该代码创建一个记录器工厂,增加了一个记录器供应商(可以使用控制台,事件日志,自定义等),然后将记录信息消息吧:这里
var loggerFactory = new LoggerFactory();
var logger = loggerFactory.CreateLogger("Test");
loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store));
// Act
logger.LogInformation("Hello");
只是一个侧面说明,如果你使用的是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或更高版本。