Hoo*_*ini 8 asp.net-mvc logging asp.net-mvc-5 asp.net-core-mvc
我想在我的asp.net MVC 5项目中创建一个日志框架.我的Startup类看起来像这样:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我查看ASP.Net MVC Core项目时,Startup类是这样的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
Run Code Online (Sandbox Code Playgroud)
是否可以在MVC 5中包含ILoggerFactory?如果可以,我应该如何初始化/注册它?是否需要在global.asax或Startup中完成?
所有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");
Run Code Online (Sandbox Code Playgroud)
这里只是附带说明一下,如果您使用的是 Visual Studio 2015 或更低版本,则安装Microsoft.Extensions.Logging
Nuget 包时可能会遇到问题,因为该包需要 Nuget 版本 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 或更高版本。
归档时间: |
|
查看次数: |
3739 次 |
最近记录: |