2011-06-07 52 views
1

我剛剛開始使用log4net。讀取XML配置文件,這是我的理解是,你必須把你的項目的程序集信息文件中的下列:在log4net中,如何才能調用Config.XmlConfigurator一次解決方案?

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="Log4net.Config", Watch:=True)> 

我有幾個項目的解決方案,而且看來我得把這個聲明在解決方案中的每個AssemblyInfo文件中(每個項目一個)。我試着將這個語句放在Startup項目的AssemblyInfo中,但是在其他項目中記錄調用不起作用。我必須在每個進行日誌調用的項目中都包含這個語句。

1)有沒有辦法在一個位置調用Config.XmlConfigurator,一次就可以調用整個解決方案?

2)什麼導致我看到的行爲?

回答

1

爲什麼不在類中使用所有程序集都會引用的靜態構造函數?如果他們在單個應用程序域中,那麼它只會被調用一次。

+0

這可能是我採取的路線。我曾經想過有一個啓動類會在啓動時做這樣的事情,但現在唯一會做的就是這個調用,所以我想我會首先嚐試AssemblyInfo方法。 – 2011-06-07 19:58:17

+0

完成此路線並創建一個靜態引導程序類,該類在啓動時調用以初始化log4net(以及任何其他應用程序需要的)。 – 2011-06-08 14:20:40

3

您應該將此放置在「託管」解決方案的程序集中。在編譯爲「.exe」的程序集中的控制檯/ winform/wpf應用程序中,在Web應用程序中,我通常在Application-Start事件中明確呼叫XmlConfigurator.Configure();

+0

我認爲這也應該起作用,但它沒有,這導致我問這個問題。我正在使用Winforms。如果我只將XmlConfigurator調用放在Winforms項目的AssemblyInfo中,那麼其他項目(類庫)都不能記錄。 – 2011-06-07 19:56:44

+0

嘗試在Winform應用程序中顯式調用XmlConfigurator.Configure()。我不太記得,但我認爲這個屬性存在一些問題。 – 2011-06-07 20:23:39

相關問題