2012-05-11 30 views
1

でのILogの単一のインスタンスを使用します。私は、アプリケーション全体ILogインスタンスの単一のインスタンスを提供するために、InSingletonScope()を呼んでいる私は私の<strong>ASP.NET MVC</strong>アプリケーションで<strong>DI</strong>ため<strong>Ninject</strong>を使用していMVCアプリケーション

 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(); 

     } 

以下のモジュールを使用して、コントローラでILog依存関係を解決しています。私はいくつかの質問がありますか?

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

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

答えて

1

これは、ロガーの作成にどれだけ費用がかかりますか。 log4netの性能特性は何か分かりませんが、高価でない場合は、新しいものを作成してください。

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

関連する問題

 関連する問題