1

ASP.NETMVCアプリケーションでNinjectforDIを使用してます。以下のモジュールを使用して、コントローラーの依存関係を解決していますILog

      public override void Load()
      {
          var configPath = ConfigurationManager.AppSettings["Log4NetConfigPath"];

          // Load the external config file for Log4Net
          XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
          log4net.Util.LogLog.InternalDebugging = true;

          Bind<ILog>().ToMethod((c) => LogManager.GetLogger("AVLogger")).InSingletonScope();

      }

アプリケーション全体InSingletonScopeでインスタンスの単一インスタンスを提供するために()を呼び出しています。ILog質問がありますか?

  1. の単一インスタンスを持つことについて本当に気にする必要がありますILogか?InSingletonScopeメソッド自体を削除できますか?

  2. 単一のインスタンスがあると、ILogパフォーマンスの問題が発生しますか?

4

1 に答える 1

1

ロガーを作成するのにどれだけ費用がかかるかによって異なります。log4net の性能特性がどうなのかはわかりませんが、高くなければ新規作成すればいいだけの話です。

InSingletonScope() を使用すると、ワーカー プロセスが存在する限りログが存在することになります (つまり、ワーカー プロセスがリサイクルまたはシャットダウンされると、ロガーは破棄されます)。これは、必要のないときにロガーがぶらぶらしていることも意味します。リソースの管理の問題であるため、「パフォーマンス」の問題ではありません。

于 2012-05-11T17:03:39.180 に答える