2012-07-06 143 views
3

我在ASP.Net MVC中遇到了與windsor castle log4net設施集成的問題。我有兩個具有相同代碼的項目(我寫的樣本保留了參考和我當前的項目)。示例項目正常工作,但我當前的項目不起作用我得到一個空引用異常。我有一個asp.net mvc 3應用程序與城堡windsor國際奧委會的整合。通過NuGet添加必要的dll。這是我的代碼fragement: 第1步:記錄器安裝
Castle Windsor Log4Net問題

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個職位,但我仍然無法得到它的工作。也許如果有人能告訴我問題是什麼,並指出我一步一步的教程,我會很感恩。

我不知道我錯過了什麼。我檢查了項目 - >屬性 - >應用程序 - > .Net Framework 4.0,但仍然不起作用。

注:我跟着溫莎城堡網站教程http://docs.castleproject.org/Windsor.Windsor-Tutorial-Part-Five-Adding-logging-support.ashx

+0

如果您使記錄器成爲構造函數依賴項(或將其保留爲屬性依賴項,但將其作爲必需項),會發生什麼? – kko 2012-07-12 23:26:18

+0

我遇到類似問題。城堡的支持似乎非常不可靠。我有一堆使用記錄器的類。這些類都是從模板生成的,因此它們使用記錄器的方式在所有情況下都是相同的,但對於某些類可以工作,而其他類則不會,它會從我的應用程序的逐個運行中更改。真的很煩人。 – Pete 2012-12-26 20:46:56

回答

0

使用Castle.Core.Logging.ILogger不是一個從log4net的。這是LoggingFacility可以使用的一個。

+0

是的,我正在使用Castle.Core.Logging.ILogger,但沒有幫助.. – avyas 2012-07-07 13:48:14

+0

有人可以幫我解決這個問題嗎? – avyas 2012-07-09 12:00:00

0

我認爲在使用ILogger之前,使用ILogger的類必須完成實例化。

因此,如果您嘗試在構造函數調用完成之前調用ILogger,則由於Windsor加載log4net的方式,您的ILogger將爲空。

您是否在AccountController的構造函數中調用LogOn()方法?

0

從您的問題中不清楚您是否正在從Windsor容器實例化控制器。也許這是明顯的,不值得一提的,但也許你已經忘記了它,所以排除這一點很好。