2014-01-16 64 views
7

我有一個奇怪的問題。我在解決方案中有多個項目。其中之一是WebAPI,它記錄得很好。另一個是MVC管理站點,這個不會登錄。這是我嘗試過的。log4net的單獨的配置文件不工作

我的日誌代碼:

var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
log.Info("Some log message"); 

在集信息我想每個以下的...

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)] 
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)] 

在Global.asax的Application_Start我試過以下(去除集信息線)

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config")); 
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
log.Info("Application starting"); 

這也不會創建日誌。我可以創建一個方法是使用global.asax中的代碼和logging.config的完整路徑。

我很困惑,因爲工作的WebAPI只用集信息,只有一個相對路徑。我也做了與該程序集信息解決方案(相對路徑)的MVC項目的樣本虛擬解決方案,它太在那裏工作。

任何想法?

更新 - FOUND發行

我不得不安裝在的Application_Start配置文件守望者:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config")); 

原來,DotNetOpenAuth.Core.dll使用log4net的,並會使用集信息解決方案不工作。我發現在這個博客的細節:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/

感謝

+0

是否有權限問題(IIS下運行它,並試圖寫入一個文件可能有問題)?你有沒有試過[調試](http://stackoverflow.com/q/677640/724591)呢?您是否嘗試過在示例application_start代碼中使用完整路徑?你的配置是否有一個根元素,或者它與任何'DeclaryingType'打印出來的內容相匹配? – matth

+0

權限問題:我不這麼認爲,因爲在Global.asax運行它有完整路徑的作品。 – BCarlson

+0

調試:在VS2012,它只是沒有錯誤執行,當我登錄。 Log4Net調試,我沒有能夠得到它記錄任何東西。令人困惑的是,相同的配置工作或不基於相對/完整路徑和全局vs assemblyInfo工作。 – BCarlson

回答

8

我不得不安裝在的Application_Start配置文件守望者:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config")); 

原來,DotNetOpenAuth.Core.dll使用log4net的,並會使用AssemblyInfo解決方案不起作用。我在這個博客中找到了詳細信息:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/(看看提到DotNetOpenAuth.Core.dll的段落)

0

我在這個解決方案上奮鬥了很多天。我終於可以找到以下解決方案爲我>

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 加上配置的@BCarlson建議

XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config")); 

要總結的一切,我已經創建了一個C#示例控制檯項目log4net的配置與外部log4net.config文件。 https://github.com/riddhik84/Log4net-Tutorial