2011-05-26 65 views
8

我們有幾個長壽命的對象,每個系統中的同一類。只有大約5或6個,它們連接到外部系統。我希望每個這些實例都有自己的可以登錄的文件。在log4net中爲每個類創建日誌的最佳方式是什麼?

這樣做的最好方法是什麼?我現在只能看到以編程方式添加記錄器作爲答案。

更新: 我想避免使用配置文件,因爲如果我添加一個新的連接到不同的遠程主機,那麼我希望它的日誌輸出到連接後命名的文件,而不必先在配置中進行破解文件。如果它是自動完成的將會很好。我不知道這可以在一次配置文件中實現,並且你不需要每次都編輯它。

回答

1

最好的答案IS programatical日誌記錄,我經歷了同樣的問題,並發現它作爲唯一的解決方案。

如需更多幫助,檢查這個問題(我的) StackOverFlow Question posted by me

,我的事情你的,我的問題是一樣的,動態記錄器,重新創建記錄器,在運行時:)

處置記錄器和所有的東西

如果還有其他問題,請問,會很樂意提供幫助,因爲我經歷了所有這些:)

+0

我幾乎得出了相同的結論。 – uriDium 2011-06-20 08:52:13

1

其實我可以看到一對夫婦的可能性:

  1. 分配給每個記錄到不同的類別爲每個連接和追加日誌爲每個類別不同的​​文件。
  2. 按照您的建議以編程方式創建新的記錄器。
  3. 使用依賴注入來根據需要注入儘可能多的獨立記錄器。
+0

我已經在使用依賴注入。我寧願不必使用配置文件,因爲每當我想添加新的連接時,都需要更改我們的配置文件。我寧願自動發生。 – uriDium 2011-05-26 09:27:16

+0

然後[AOP](http://code.google.com/p/postsharp-user-plugins/wiki/Log4PostSharp)可以通過簡化配置文件生成來簡化屬性的使用,但您的初始設置時間將是有點複雜(但會很容易使用)。 – 2011-05-26 09:30:15

0

我有一篇文章,可能會幫助:

http://horth.com/blog/?p=165

這是關於在運行時更改的日誌文件。你可以做的是將每個實例的文件名傳入你的log4net文件。這樣你可以爲你的類的每個實例創建一個日誌文件。

至於你不想使用配置文件的編輯,這種方法解決了這個問題,以便你可以使用配置文件,但仍然有你想要的靈活性。

+0

我認爲這個工程如果進程想登錄到不同的文件。我想創建的所有不同日誌都屬於同一個進程。 – uriDium 2011-05-30 07:21:18

+0

@uriDium - 示例是針對每個進程的一個文件。但是,您可以將其更改爲每個實例(類的)一個文件。只需更改此行以獲取您的實例名稱或您傳入的另一個自定義屬性:'logFile = Process.GetCurrentProcess()。ProcessName +「。log」;'無論您傳遞給此logFile變量是什麼,登錄。這意味着每次初始化一個類時都可以創建一個不同的日誌文件,這就是你想要做的。 – IAmTimCorey 2011-05-30 19:15:58

相關問題