2012-10-30 103 views
2

我有一個可以安裝的使用Common.Logging進行日誌記錄的ASP.Net應用程序。什麼是記錄最好的IFormatProvider?

當寫日誌消息,即:

_log.InfoFormat(CultureInfo.???, "{0}: Writing to the Log", DateTime.UtcNow); 

我感到困惑,我應該使用哪個文化。我想要的結果是日誌消息使用服務器的區域設置格式化。這樣當管理員安裝應用程序時,他們可以控制其日誌消息的格式。

有四肢着地的選擇,但沒有一個似乎是正確的選擇:

  • CultureInfo.CurrentCulture:這似乎是這將是一個Windows應用程序的正確選擇,但ASP.Net正在改變這種以匹配用戶瀏覽網站 - 所以適合格式化內容以顯示給用戶,但不適用於寫入日誌。
  • CultureInfo.CurrentUICulture:與CurrentCulture類似的問題 - 將與當前瀏覽該網站的用戶相匹配。
  • CultureInfo.InstalledUICulture:系統安裝文化 - 似乎與安裝的窗口的副本相關,但用戶不可更改。顯然這是有點useless
  • CultureInfo.InvariantCulture:這不是用戶可配置的。我想知道這是否是這裏四個選項中最好的,但至少它是一致的,不會因瀏覽網站的人員/媒體窗口的安裝而異。

我在想知道是否需要在我的web.config中爲系統文化添加顯式配置,以便安裝程序可以選擇一種文化。我真正想要的答案就是在ASP.Net將它更改爲與當前用戶匹配之前的任何CultureInfo.CurrentCulture。

注意:我知道我可以關閉ASP.Net,更改每個用戶的CurrentCulture,但UI依賴於此行爲。

回答

1

管理員喜歡對日誌進行控制。告訴他們去配置他們的服務器文化,以便日誌採用特定的格式,這對我來說似乎不是最好的解決方案。

將配置選項添加到web.config中是個不錯的主意。這將讓管理員根據需要配置日誌格式。

與其詢問用戶,您可以在安裝時使用CultureInfo.CurrentCulture進行智能猜測。如果用戶希望它是不同的東西,他總是可以改變它。

如果你想要把它從CultureInfo.CurrentCulture,而不是配置,你可以在Application_Start活動期間選擇它,並保持它在應用程序上下文。

相關問題