Asp.net-Mvc
我可以在 ASP.NET MVC 5(不是 mvc 核心)項目中使用 ILoggerFactory 嗎?
我想在我的 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,它不是 ASP.NET Core 的一部分。要在任何應用程序中使用它,只需
new設置您需要使用的類型並開始呼叫它們 - 它沒有什麼神奇之處。而且,當然,因為它不在 ASP.NET Core 應用程序中,所以您不會獲得自動依賴注入 (DI)(因為 ASP.NET Core 是用來連接的)。在這種情況下,
LoggerFactory直接使用可能是最簡單的方法以及由此產生的所有 API。事實上,如果您查看 Logging 中許多類型的單元測試,它們的模式類似於您在不使用 DI 時所做的模式:
該程式碼創建一個記錄器工廠,添加一個記錄器提供程序(您可以使用控制台、事件日誌、自定義等),然後向其中記錄一條資訊消息:
var loggerFactory = new LoggerFactory(); var logger = loggerFactory.CreateLogger("Test"); loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store)); // Act logger.LogInformation("Hello");