2009-01-21 58 views
13

異常日誌應該去的問題已經在這裏討論過一次或兩次(或更多),其中一個建議是應用程序不應該寫入安裝文件夾。
但是,如果我將日誌放在%appdata%的某處,這意味着每個用戶都有自己的一組日誌。我寧願將所有日誌都放在一個位置。
在最後一個MSDN mag問題中,在安裝文件夾中有一個單獨的用於日誌的子文件夾(例如%programfiles \ myapp \ logs)被稱爲規則中的有效例外。當然,這個文件夾的ACL必須相應地設置。
安裝文件夾中是否有日誌文件夾的常用操作或絕對不可用?你把你的異常日誌放在哪裏?異常日誌文件的最佳位置(Windows)

編輯:
事實上,我們使用的是log4net,所以日誌的位置和類型是完全可配置的。但是,我想要有一個合理的默認值。 我更喜歡在事件日誌上有一個文件。對於大多數用戶來說,文件比事件日誌更容易處理。
但是,讓我們假設我想擁有文件。安裝文件夾中有日誌文件夾可以嗎?

回答

6

隨着更新的OS vista和win 2008寫入程序文件目錄,可能需要ACL或虛擬化到用戶的文件夾。我建議在%AllUsersProfile%下設置一個目錄,這樣你就可以爲所有用戶的日誌文件提供一個公共位置,而且您的應用程序無需以管理員身份運行即可在其中編寫它們。

9

對於Windows,請使用事件日誌。創建自己的日誌非常簡單,或者您可以將消息添加到其中一個標準日誌中。

這樣做的好處是,幾乎每個地球上的技術人員(和程序員)都希望在事件日誌中出現事情不正確時顯示的內容。

+0

真的嗎?看看`eventvwr`從來不是我第一次遇到崩潰的直覺:P我只是比較了我的`%AllUserProfile%`並看到每個人都在使用它。 OTOH我找不到除MS在`eventvwr`創建的日誌以外的任何日誌。此外,將日誌寫成文件而不是Windows事件會使日誌記錄部分更容易跨平臺和便攜。 – kizzx2 2010-10-27 17:44:37

1

這主要取決於應用程序,這就是爲什麼我猜測有這麼多可能的答案。

對於網站,我會在服務器上有一個「C:\ log」,然後是個人網站的「C:\ log \ website」,並使用Log4Net或類似的。

對於Web服務,窗口服務,預定作業等,我會寫入Windows事件日誌。我的電腦 - >管理 - >系統工具 - >事件視圖 - >(我的服務)

對於部署在我控制的環境中的Windows應用程序(即內部公司應用程序),我會告訴它「 「例外報告。

對於未知用戶不可用的Windows應用程序。沒做什麼。

2

如果你不能或不會使用事件日誌,那麼真的沒有任何標準化的地方放置日誌文件。你只需要確定該位置是有據可查的,並且確實需要在代碼中使用邏輯來確保日誌文件可以增長的大小有限制。

1

您將需要注意寫入日誌文件夾的權限。

這是使用應用程序數據文件夾而不是安裝文件夾的關鍵原因之一,因爲在Vista中向前移動,默認情況下,您可能無法訪問寫入安裝文件夾。

1

我認爲你應該更喜歡AppData文件夾,但是如果你想將所有日誌合併到一個文件夾中,然後使用所有用戶目錄(Environment.SpecialFolder.CommonApplicationData)並在每個用戶的應用文件夾內創建子文件夾。通過這種方式,您不僅可以擺脫許可問題,還可以避免混淆自己的空間:)恕我直言。

7

進行日誌記錄,無需特殊ACL的共同文件,使用類似

string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\MyCompany"; 

它引用

C:\Documents and Settings\All Users\Application Data\MyCompany 

對XP的文件夾,像

C:\ProgramData\MyCompany 

下Vista系統。您需要驗證文件夾是否存在,可能是在應用程序啓動時。