温莎城堡 log4Net 问题



我在 MVC 中集成温莎城堡 log4net 设施时遇到问题 ASP.Net。我有两个具有相同代码的项目(我为保留引用和当前项目而编写的示例)。示例项目工作正常,但我当前的项目不起作用,我得到一个空引用异常。我有一个集成了温莎城堡IOC的 asp.net mvc 3应用程序。通过NuGet添加了必要的dll。这是我的代码框架:第 1 步:记录器安装程序

public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
{            
     container.AddFacility<LoggingFacility>(f => f.UseLog4Net());            
     //container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.Log4net).WithConfig("log4net.config")); 
}

第 2 步:

log4net.config

第 3 步:在我的帐户控制器(登录方法)中。

public ILogger Logger { get; set; }
Logger.InfoFormat("User {0} has successfully signed in.", model.UserName);

在过去的一周里,我已经尝试了所有方法,并阅读了这个网站上的 20-30 篇帖子,但我仍然无法让它工作。如果有人能告诉我问题是什么并指出我分步教程,我将不胜感激。

不确定我错过了什么。我已经检查了Project->Properties->Application->.Net Framework 4.0,但仍然不起作用。

注意:我遵循了温莎城堡网站的教程 http://docs.castleproject.org/Windsor.Windsor-Tutorial-Part-Five-Adding-logging-support.ashx

不要使用来自 log4net 的那个Castle.Core.Logging.ILogger。这就是LoggingFacility使用的一个。

我认为使用 ILogger

的类必须在您尝试使用 ILogger 之前完成实例化。

因此,如果你尝试在构造函数调用完成之前调用 ILogger,由于 Windsor 加载 log4net 的方式,你的 ILogger 将为空。

您是否在帐户控制器的构造函数中调用 LogOn() 方法?

从您的问题中不清楚您是否正在从 Windsor 容器实例化控制器。也许这是显而易见的,不值得一提,但也许你只是忘记了它,所以最好排除它。

最新更新