gpt4 book ai didi

asp.net-mvc - 我可以在 ASP.NET MVC 5(非 mvc 核心)项目中使用 ILoggerFactory 吗?

转载 作者:行者123 更新时间:2023-12-01 23:12:45 24 4
gpt4 key购买 nike

我想在我的 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 中完成?

最佳答案

所有 Microsoft.Extensions.* 类型(包括日志系统)都可以在 ASP.NET Core 之外使用。事实上,它们在 Entity Framework Core 中使用,而 Entity Framework Core 不是 ASP.NET Core 的一部分。

要在任何应用程序中使用它,只需新建您需要使用的类型并开始调用它们 - 这没有什么神奇的。当然,因为它不在 ASP.NET Core 应用程序中,所以您无法获得自动依赖项注入(inject) (DI)(因为 ASP.NET Core 是连接它的东西)。

在本例中,直接使用 LoggerFactory 以及来自其中的所有 API 可能是最简单的方法。

事实上,如果您查看 Logging 中许多类型的单元测试,您会发现它们的模式与您不使用 DI 时所做的类似:

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

该代码创建一个记录器工厂,添加一个记录器提供程序(您可以使用控制台、EventLog、自定义等),然后向其中记录一条信息消息:

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

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

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

关于asp.net-mvc - 我可以在 ASP.NET MVC 5(非 mvc 核心)项目中使用 ILoggerFactory 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com