我想在我的asp.net MVC 5项目中创建一个日志框架。我的Startup类看起来像这样:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
但是,当我查看ASP.Net MVC Core项目时,Startup类是这样的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
是否可以在MVC 5中包含ILoggerFactory?如果可以,我应该如何初始化/注册它?是否需要在global.asax或Startup中完成?
答案 0 :(得分:7)
所有Microsoft.Extensions.*
类型(包括Logging系统)都可以在ASP.NET Core之外使用。实际上,它们在Entity Framework Core中使用,它不是ASP.NET Core的一部分。
要在任何应用中使用它,只需new
向上使用您需要使用的类型并开始调用它们 - 它没有任何神奇之处。当然,因为它不在ASP.NET核心应用程序中,所以你不会得到自动依赖注入(DI)(因为ASP.NET核心就是连线)。
在这种情况下,最简单的方法是直接使用LoggerFactory
以及来自该版本的所有API。
事实上,如果您查看Logging中许多类型的单元测试,它们的模式与不使用DI时的模式类似:
该代码创建一个记录器工厂,添加一个记录器提供程序(您可以使用Console,EventLog,自定义等),然后将一条信息消息记录到它:
var loggerFactory = new LoggerFactory();
var logger = loggerFactory.CreateLogger("Test");
loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store));
// Act
logger.LogInformation("Hello");
答案 1 :(得分:3)
请注意,如果您使用的是Visual Studio 2015或更低版本,则可能在安装Microsoft.Extensions.Logging
Nuget软件包时遇到问题,因为此软件包需要Nuget Version 4.3.0或更高版本...
要安装Microsoft.Extensions.Logging,您需要在Visual Studio 2015上安装:https://dist.nuget.org/visualstudio-2015-vsix/v3.6.0/NuGet.Tools.vsix,或升级到Visual Studio 2017。
此外,Microsoft.Extensions.Logging
无法安装在.Net 4.5上,您需要.Net 4.6.1或更高版本。