1

我在我的ASP.NET MVC应用程序中使用Ninject进行DI 。我正在使用以下模块解决控制器中的依赖关系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 回答