3

我在 ASP.Net MVC 中集成温莎城堡 log4net 设施时遇到问题。我有两个具有相同代码的项目(我为保留参考和当前项目而编写的示例)。示例项目工作正常,但我当前的项目不工作我得到一个空引用异常。我有一个集成了城堡温莎 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 步:在我的 AccountController(登录方法)..

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

4

3 回答 3

0

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

于 2013-09-26T11:53:24.310 回答
0

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

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

您是否在 AccountController 的构造函数中调用 LogOn() 方法?

于 2012-09-07T18:42:37.020 回答
0

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

于 2012-07-06T22:00:05.020 回答