2009-10-15 80 views
25

將應用程序的調試日誌文件放置在Windows用戶環境中的最佳「標準」位置是什麼?在Windows上存儲應用程序日誌文件的位置

在這種特殊情況下,它是一次運行並可能出錯的應用程序。它將由系統管理員類型運行,可能需要在應用程序運行後檢查日誌。每次運行應用程序時,都會創建一個新的日誌文件。已到目前爲止浮動

選項包括:

  1. 程序目錄
  2. 用戶桌面
  3. 用戶的本地應用程序數據目錄。

我有我的最愛,但我想知道SO共識是什麼。

注意:這與this question類似,但我們正在處理的應用程序只能由一個用戶運行一次。

+0

日誌文件的用途是什麼?這可能會推動答案。誰會看?在大多數情況下會被看到嗎?只有看看是否有問題? – noctonura

+0

該工具是一個數據庫升級工具,它爲您的數據庫做了一堆事情。日誌顯示了它所做的一切,包括錯誤。大多數用戶可能只是在出現錯誤時才查看它,但我們預計很多DBA會想知道到底做了什麼。所以他們會想找到日誌並看看它。 –

+0

另請參閱[這個問題](http://stackoverflow.com/questions/269893/best-place-to-store-config-files-and-log-files-on-windows-for-my-program) –

回答

13

Application Data目錄似乎是一個完美的地方,但它是一個幾乎看不見的區域。你需要給你的用戶一個簡單的方法來實現它。

讓您的安裝腳本在應用程序數據區域爲您的程序創建一個日誌文件夾,並在「開始」菜單中包含指向該文件夾的鏈接。

+2

AppData文件夾是最好的地方,但它確實需要程序或開始菜單中的鏈接才能輕鬆訪問,即使對於管理員類型的用戶也是如此。爲什麼不在運行結束時彈出日誌文件,或者打開AppData文件夾的資源管理器窗口? ProgramFiles文件夾是錯誤的,除非你是安裝程序,否則Vista會將其視爲只讀文件。用戶文檔和桌面是不好的選擇,他們應該保持清楚,用於用戶創建(鍵入,下載)而不是日誌的文檔。 – Martin

+0

聽起來像一個很好的想法給我... –

+0

你能詳細解釋這個答案嗎?我會怎樣命名我在應用程序數據中創建的日誌文件夾?我的應用程序的名稱?組織名稱?什麼是Windows約定? – Thunderforge

1

Windows臨時文件夾

+6

爲什麼?誰會在那裏尋找一個日誌文件。這不是一個臨時文件,海事組織。 –

+1

他告訴「一個應用程序只可能由一個用戶運行一次」,這個信息我認爲是臨時日誌和臨時應用程序。 – Zote

4

日誌的「標準」位置是AppData目錄。但是,真正取決於你想存儲它們的位置。由於它們是管理員(高級用戶),因此將日誌存儲在與正在運行的應用程序相同的目錄中應該沒有問題。即使在用戶的MyDocuments將是一個很好的呼喊。

+3

好點,但我不希望將事情記錄到我的文檔或桌面 - 這些是用戶的地方,我不認爲應用程序應該寫任何東西給他們,除非被用戶指示。 –

+0

應用程序(默認情況下)將項目保存在MyDocuments文件夾中並不罕見,例如模板。 Visual Studio和Delphi一樣。 – James

+0

當事情將事情保存到我的文檔時,我個人會感到惱火,但那就是我。其中一個反對AppData的觀點是用戶不易「發現」,所以我的文檔可能會更好...... –

2

1.程序目錄< - 不好。理想情況下,您只會在此文件夾上擁有接收權限。

2.用戶的桌面< - 技術上可以完成,但我不喜歡這個想法。污染桌面......作爲用戶,我不喜歡它。

3.用戶的本地應用程序數據目錄。 < - 更好

我的首選項是程序目錄下的一個子目錄(具有像「DebugLog」或類似的明確名稱)。在該子目錄權限應允許創建和寫入文件(「更改」將被罰款)

+2

在程序目錄下使用任何東西是一個壞主意,因爲它是使用該機器的任何用戶共享的。然後你會授予任何人對此DebugLog目錄的讀/寫權限嗎?然後你有安全問題,不同的用戶覆蓋eachothers的日誌文件等....你的#3是正確的答案恕我直言。 – noctonura

+0

你很對。在這種特殊情況下(調試日誌記錄),在我看來,一個子目錄是可以接受的。 (這不是使用這個軟件的標準方式,而是一個例外)。因此,允許將調試日誌存儲在Debug子目錄中即可。應該使用唯一名稱創建調試日誌以防止覆蓋。 – DmitryK

+0

當您運行安裝程序時,您將如何確定用戶在Program Files中創建的文件夾。 –

4

在我工作的組織,我們使用(%TEMP%或%TMP%)\ CompanyOrProductName \ Logs目錄 使用%APPDATA%如果日誌很多或很大,可能會出現漫遊配置文件的問題:它會減慢它們的登錄過程...

+1

好點。在AppData中傾倒東西時要記住一些事情。 –

+11

考慮%LOCALAPPDATA% - 非漫遊等效。 –

+1

我不會在TEMP文件夾中存儲日誌文件。 TEMP中的文件應該是臨時的,可以隨時刪除。日誌的目的是保持在那裏,直到發生不好的事情,或者你需要諮詢它。你不希望你的日誌被系統隨機刪除,並且在你需要它的那一天結束。如果日誌變得太大,您需要設置應用程序以使用循環日誌或在一段時間後刪除較早的文件。 –

1

如果您將EXPECT出錯了,請將其放在用戶的本地Application Data目錄中。

如果你不想,只想記錄反正我可能會考慮真正使用臨時目錄。推理很簡單。如果應用程序只運行一次,您將在Application Data目錄中留下垃圾,否則沒有人會再次需要。在臨時你至少有CHANCE,它將在稍後被清理。

順便說一句:恕我直言,最好的將不會創建日誌作爲一個文件在所有(登錄到內存),直到出現問題。然後,您仍然可以提供一個對話框,供用戶選擇在哪裏保存日誌。

相關問題