2011-07-28 64 views
1

我正在Mono中開發C#應用程序並嘗試使用log4net。當我手動加載配置時,記錄器工作得很好,但是我想要更優雅的東西。從Mono中加載log4net配置

在它指出一個配置可以從該組件通過使用下面的(或相似的)線加載的log4net的文檔:

[組件:log4net.Config.XmlConfigurator(ConfigFileExtension =「log4net的」,觀看= true)]

我已經確保配置文件被移動到構建目錄並具有該擴展名。我也確保AssemblyInfo.cs在MonoDevelop中被標記爲「應用程序定義」。我不知道爲什麼這不起作用。有人有任何想法嗎?

順便說一句:我已經遍地搜索試圖找到答案。我也嘗試從資源加載配置,並且不想工作。

+0

.log4net文件是否根據您的.exe命名?例如myapp.exe.log4net – TheNextman

+0

不,這是否是假設?我看到類似的例子,但沒有人說它「必須」。我認爲這只是一個慣例。 – Chad

+0

試過它只是踢,同樣的結果:沒有日誌消息。 – Chad

回答

0

在log4net中使用多個配置文件是可能的,但很尷尬。請參閱此處的討論:log4net - configure using multiple configuration files

您是否在執行您的.exe和.dll內的日誌記錄?

你可以用一個配置文件嗎?

請記住本節的文檔:「如果使用配置屬性,則必須調用log4net以允許其讀取屬性。對LogManager.GetLogger的簡單調用將導致調用程序集上的屬性被讀取,因此,在應用程序啓動期間,以及在任何外部程序集加載和調用之前,必須儘早進行日誌記錄調用。「

嘗試並將問題提煉爲一個簡單的示例。

  • 確保您的配置文件是名exename.exe.log4net
  • 確保您將AssemblyAttribute您在quesion有,在你的.exe
  • 的AssemblyInfo.cs中確保您撥打一個電話到您的.exe文件中的LogManager.GetLogger,然後調用.DLL中的任何代碼