共用方式為


管理 IIS 記錄檔儲存體

作者:Jim van de Erve

您可以使用壓縮、遠端儲存體和腳本刪除來管理 Internet Information Services (IIS) 記錄檔取用的伺服器磁碟空間量。

概觀

IIS 產生的記錄檔會隨著時間耗用大量的磁碟空間。 記錄可能會填滿整個硬碟。 為了減輕此問題,許多使用者完全關閉記錄。 幸運的是,有其他方法可以這麼做,例如:

下列各節將說明上述風險降低措施。 您也可以執行下列動作來控制磁片使用量:

  • 省略不需要的屬性欄位來限制記錄大小
  • 為網站和應用程式建立個別的記錄
  • 使用集中式二進位記錄來保留記憶體資源。

如需詳細資訊,請參閱 在 IIS 中設定記錄

啟用資料夾壓縮

IIS 記錄檔壓縮為大約 2% 的原始大小。 啟用記錄檔壓縮,如下所示。 您必須是系統管理員,才能執行這個程序。

  1. 按一下圖示列中的 [ 檔案管理員] 圖示。
  2. 依預設,移至包含 IIS 記錄檔的資料夾 (, %SystemDrive%\inetpub\logs\LogFiles) 。
  3. 以滑鼠右鍵按一下資料夾,然後按一下 [ 屬性]。
  4. 在 [屬性] 頁面的 [ 一般 ] 索引 標籤上,按一下 [ 進階]。
  5. 按一下 [壓縮內容] 以節省磁碟空間,然後按一下 [ 確定]。 啟用壓縮
  6. 按一下 [ 套用],然後選取是否只壓縮資料夾,或資料夾、其子資料夾及其檔案。
  7. 按一下 [確定]。 確認資料夾內容已壓縮。 資料夾的名稱和每個檔案的名稱都應該以藍色標示,而壓縮檔案的大小應該較小。

這是降低磁片使用量的簡單方式。 不過,這不是最終解決方案,因為磁片使用量仍會隨著時間成長,最終可能會填滿硬碟。

如果資料夾已經包含大量資料,電腦可能需要一段時間才能壓縮其內容。 另請注意,此一次性程式可能會在初始壓縮期間使電腦變慢,因此如果這是生產伺服器,請在離峰時段執行這項作業,以避免服務降低。

將記錄資料夾移至遠端系統

IIS 記錄檔預設會儲存在 %SystemDrive%\inetpub\logs\LogFiles IIS 伺服器的 資料夾中。 資料夾是在伺服器或個別網站的 [記錄] 頁面上的 [目錄] 屬性中設定。 若要減少記錄磁片使用量的問題,您可以將 IIS 記錄檔移至另一部伺服器上具有更多空間的資料夾。 此伺服器可以位於與本機 IIS 伺服器相同的網域,或位於不同的網域中。 您可以針對整個伺服器或個別網站,從遠端儲存記錄檔。

此解決方案可協助系統的安全性,因為如果本機硬碟當機,記錄資料仍可在遠端儲存體上使用。 此外,分析系統也可以取用記錄檔。

將 IIS 記錄檔的位置變更為遠端共用,如下所示:

  1. 在執行 IIS 的本機 Web 服務器所在的遠端伺服器上建立記錄檔目錄。

  2. 在資料夾的 [ 屬性 ] 頁面上,按一下 [ 共用 ] 索引標籤上的 [ 共用 ],以便共用目錄。 在 [ 安全性 ] 索引標籤上,指派具有適當許可權的群組和使用者。 確定適當的群組和使用者能夠讀取和寫入記錄檔。 記錄檔資料夾屬性

    如需詳細資訊,請參閱 設定遠端記錄的許可權

    注意:如果您想要將記錄檔寫入至不同網域中的遠端伺服器,請參閱 設定跨網域記錄的 Null 會話

  3. 在本機 Web 服務器上開啟 IIS 管理員

  4. [IIS 管理員] 的 [ 連線 ] 窗格中,按一下伺服器或網站。

  5. 按兩下 [記錄]。 記錄圖示

  6. 在 [ 目錄] 文字方塊中,輸入您在遠端伺服器上建立之目錄的完整 UNC 路徑。 例如,輸入 \servername\Logs,其中 「servername」 代表遠端伺服器的名稱,而 「Logs」 代表儲存記錄檔的共用名稱稱。 記錄頁面

  7. 在 [ 動作 ] 窗格中,按一下 [ 套用],然後按一下 [ 確定]。 目錄中的所有網站都應該開始將資料記錄到遠端共用。

    如需詳細資訊,請參閱 遠端記錄

依腳本刪除舊的記錄檔

您可以執行腳本來自動刪除早于特定年齡的記錄檔,以控制記錄檔的磁片使用量。 在排程的工作中執行此腳本,會讓磁片在控制下保持填滿的問題,而不需持續維護。

下列 VBScript 會檢查資料夾中每個記錄檔的存留期,並刪除任何早于指定存留期的記錄檔。 若要根據您的用途自訂腳本,只要在腳本第 1 行中變更資料夾的名稱和路徑,然後在第 2 行中,將最長存留期變更為所需的值。

sLogFolder = "c:\inetpub\logs\LogFiles"
iMaxAge = 30   'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
For Each colSubfolder in colFolder.SubFolders
        Set objFolder = objFSO.GetFolder(colSubfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
                iFileAge = now-objFile.DateCreated
                if iFileAge > (iMaxAge+1)  then
                        objFSO.deletefile objFile, True
                end if
        Next
Next

上述腳本會掃描所有子資料夾,因此它會處理所指定資料夾內和下所有網站的記錄。 如果您想要將進程限制為僅單一網站,請適當地變更路徑。

若要手動執行腳本,請在系統管理員命令列中執行下列腳本: cscript.exe c:\scripts\retentionscript.vbs

使用腳本刪除記錄檔是耗用磁碟空間之記錄檔問題的長期可靠解決方案。 如果您將程式自動化,如下所示,它不需要持續維護。

以排程工作的形式執行腳本

您可以藉由建立 Windows 工作排程定期執行腳本,將刪除記錄檔的工作自動化。 您可以使用 Windows 工作排程器,排程腳本隨時執行。 設定排程工作的方式應該與記錄檔變換選項的設定協調。

  1. 開啟伺服器管理員,按一下 [工具]功能表,然後按一下 [工作排程器]。
  2. 在 [工作排程器] 對話方塊的 [動作] 窗格中,按一下 [建立工作]。 建立工作控制項
  3. 在 [建立工作] 對話方塊的 [一般] 索引標籤上,輸入工作的名稱,例如「刪除記錄檔」。 設定安全性屬性,選取具有足夠許可權的使用者帳戶來執行腳本。 [建立工作] 對話方塊
  4. 按一下 [ 觸發程式] 索引標籤 ,然後按一下 [ 新增]。 在 [新增觸發程式] 對話方塊中,將 [開始工作] 設定為[排程]。 選取週期性,例如 [每日]。 輸入 [ 開始日期 ],選取更進階的設定,並確定如果您準備好起始排程,則會選取 [ 已啟用 ]。 按一下 [確定]。 [新增觸發程式] 對話方塊
  5. 按一下 [動作] 索引標籤,然後按一下 [新增]。 在 [ 新增動作 ] 對話方塊中,選取 [動作] 的值,在此案例中為 [啟動程式]。 在 [程式/腳本] 中,輸入 cscript,然後在 [ 新增引數] (選擇性) 中,輸入腳本檔案的路徑和名稱,例如 C:\iis\Log\_File\_Deletion.vbs 。 按一下 [確定]。 [新增動作] 對話方塊
  6. 按一下 [確定]。
  7. 確認工作已新增至 [ 作用中工作 ] 窗格。
  8. 以滑鼠右鍵按一下新工作,然後選取 [ 執行]。 [工作排程器] 對話方塊
  9. 流覽至腳本執行所在的資料夾,並確認已刪除適當的記錄檔。
  10. 流覽回 [工作排程器],以滑鼠右鍵按一下工作,然後按一下 [ 結束 ],讓狀態回到 [ 就緒 ],工作已準備好執行排程。