Asp.net mvc 在MVC应用程序中使用ILog的单个实例
在我的ASP.NET MVC应用程序中,我正在为DI使用Ninject。我正在使用下面的模块解析控制器中的Asp.net mvc 在MVC应用程序中使用ILog的单个实例,asp.net-mvc,log4net,ninject,Asp.net Mvc,Log4net,Ninject,在我的ASP.NET MVC应用程序中,我正在为DI使用Ninject。我正在使用下面的模块解析控制器中的ILog依赖关系 public override void Load() { var configPath = ConfigurationManager.AppSettings["Log4NetConfigPath"]; // Load the external config file for Log4Net
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();
}
public override void Load()
{
var configPath=ConfigurationManager.AppSettings[“Log4NetConfigPath”];
//加载Log4Net的外部配置文件
Configure(新的System.IO.FileInfo(configPath));
log4net.Util.LogLog.InternalDebugging=true;
Bind().ToMethod((c)=>LogManager.GetLogger(“AVLogger”)).InSingletonScope();
}
我正在调用InSingletonScope
()以在整个应用程序中提供ILog
实例的单个实例。我有一些问题
ILog
实例而烦恼吗?我可以删除SingletonScope中的方法本身吗
ILog
实例是否会造成一些性能问题这将取决于创建记录器的成本。我不知道log4net的性能特点是什么,但是如果它不贵的话,你应该创建一个新的
当您使用InSingletonScope()时,这意味着只要工作进程存在,日志就会一直存在(即当它被回收或关闭时,日志将被销毁)。这也意味着当你不需要它的时候,记录器就在你身边。与其说它是一个“性能”问题,不如说它是一个管理资源的问题。这取决于创建记录器的成本有多高。我不知道log4net的性能特点是什么,但是如果它不贵的话,你应该创建一个新的 当您使用InSingletonScope()时,这意味着只要工作进程存在,日志就会一直存在(即当它被回收或关闭时,日志将被销毁)。这也意味着当你不需要它的时候,记录器就在你身边。与其说它是一个“性能”问题,不如说它是一个管理资源的问题