この記事の目的 Loggerを様々なクラスで使用するにあたり、ASP.NET MVC Coreでは、規定でDIを用いてILoggerインタフェースにLoggerを注入します。 しかしこれまで多くのシステムでは、Loggerクラスの静的メソッドを用いてLoggerインスタンスを取得し、以下のように使っていました。 static readonly log4net.Ilog _logger = log4net.LogManager.GetLogger("ErrorLog"); 上記のコードがどのレベルにあるか(クラスレベルか、システムグローバルか)はさておき、各クラスからはなんらかのグローバル変数かクラスの静的メンバを直接参照していたわけです。 しかし、クラスを特定のグローバルな何かに依存させるやり方は、そのクラスの可搬性を下げ、テストもしにくくしてしまいます。 その問題を解決する為にDIが導入