在MVC应用程序中使用ILog的单个实例

时间:2012-05-11 16:53:33

标签: asp.net-mvc log4net ninject

我在 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的单个实例产生一些性能问题吗?

1 个答案:

答案 0 :(得分:1)

这取决于创建记录器的成本。我不知道log4net的性能特征是什么,但如果它不贵,你应该创建一个新的。

当您使用InSingletonScope()时,这意味着只要您的工作进程存在(即,当它被回收或关闭时,记录器将被销毁),该日志将存在。这也意味着当你不需要它时,记录器就会徘徊。这不是一个“性能”问题,因为它是管理资源的问题。