Asp.net MVC5プロジェクトでログフレームワークを作成したいと思います。私のスタートアップクラスは次のようになります。
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.NETCoreの外部で使用できます。実際、これらはASP.NETCoreの一部ではないEntityFrameworkCoreで使用されています。
どのアプリでも使用するには、使用する必要のあるタイプをnew
上げて、それらの呼び出しを開始します。魔法のようなものは何もありません。そしてもちろん、ASP.NET Coreアプリにはないため、自動依存性注入(DI)は取得されません(ASP.NET Coreがそれを接続するためです)。
この場合、LoggerFactory
を直接使用し、そこから派生するすべてのAPIを使用するのがおそらく最も簡単です。
実際、Loggingの多くのタイプの単体テストを見ると、DIを使用しない場合と同様のパターンがあります。
このコードは、ロガーファクトリを作成し、ロガープロバイダー(コンソール、EventLog、カスタムなどを使用できます)を追加してから、情報メッセージをログに記録します。
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 Studio2017にアップグレードします。
また、Microsoft.Extensions.Logging
は.Net4.5にインストールされないため、.Net4.6.1以降が必要です。