原文:http://www.iis.net/learn/manage/provisioning-and-managing-iis/managing-iis-log-file-storage
Overview
IIS日誌會消耗大量的硬碟空間,有潛在寫滿整個硬碟空間的風險. 為了解決這個問題很多使用者會選擇關閉日誌.幸運的是 這裡有些其它的選擇:
- 壓縮日誌資料夾
- 把日誌資料夾轉移到遠端系統上去
- 通過script刪除老的日誌Delete old log files by script.
- 通過IIS Log File Cleaner 刪除老的日誌.
你可以根據下面的方案控制硬碟的使用率:
- 通過減少不必要的欄位減少日誌大小
- 根據網站和應用程式建立獨立的日誌
- Preserve memory resources by using centralized binary logging.
更多請見 Configuring Logging in IIS.
壓縮日誌資料夾
IIS日誌檔案壓縮原始大小的2%. 通過下面的方法壓縮日誌資料夾. 執行下面的步驟前請確保你擁有管理員許可權.
- 點選檔案資源管理器.
- 進入到IIS日誌資料夾 (預設是, %SystemDrive%\inetpub\logs\LogFiles).
- 右鍵日誌資料夾選擇屬性.
- 在屬性的常規標籤點選高階.
- 選中壓縮內容以便節省磁碟空間,然後點選確定.
- 點選應用Click Apply,選擇壓縮所有子資料夾和檔案.
- 點選確定. 如果資料夾的檔名變成藍色了那麼你的操作成功了.
這是個減少日誌佔用硬碟空間的簡單方法, 不是最終的解決方案. 然後以為日誌檔案一天天的增漲最後還是會沾滿硬碟空間.
如果日誌資料夾下有大量的日誌,壓縮日誌資料夾的過程可能會稍長一些,建議在網站伺服器的非高峰期壓縮日誌資料夾.
將日誌資料夾移到遠端系統上去
IIS日誌檔案預設儲存在IIS伺服器的 %SystemDrive%\inetpub\logs\LogFiles 下面.你可以把IIS日誌資料夾移去一個有更多硬碟空間的伺服器上面去.
將IIS日誌資料夾設為遠端伺服器的方法步驟如下:
- 在遠端伺服器上建立一個資料夾作為日誌資料夾.
- 右鍵這個資料夾選擇屬性, 在共享標籤下點選共享. 在安全標籤下, 分配相應的許可權. 確保合適的組或使用者名稱有讀寫日誌檔案的許可權.
更多請見 Configuring Permissions for Remote Logging.
Note: 如果你像將日誌檔案寫到一個不同domain的遠端伺服器上請看看這篇文章 Setting Up a Null Session for Cross-Domain Logging.
- 開啟IIS管理器.
- 點選伺服器或者某個網站.
- 雙擊日誌圖示.
- 在目錄的文字框內輸入1中建立的遠端共享的日誌檔案的路徑. 例如 輸入 \\servername\Logs
- 在右邊的操作面板點選應用並且確認.
更多請見 Remote Logging.
使用指令碼刪除老的日誌
你可以執行指令碼自動刪除老日誌.
下面的 VBScript 會堅持日誌的日期 刪除老的日誌 下面的指令碼刪除30天以前的日誌
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任務自動呼叫上面的指令碼定時清除老日誌, 方法步驟如下.
- 開啟任務計劃程式.
- 在操作面板中點選建立任務.
- 在常規tab中的名字中輸入任務名字,如 "Delete Log Files". 在安全選項中選擇有許可權的合適的使用者來執行這個任務指令碼.
- 在觸發器tab中點選新建. 非常簡單按照下面的圖片來設定就行了.
- 點選操作Tab, 點選新建. 在操作中選擇啟動程式. 在程式或指令碼中輸入cscript, 在新增引數中 輸入上面指令碼的路徑和檔名, 例如, "C:\iis\Log_File_Deletion.vbs".
- 點選確定.
- 驗證任務是否被新增到了任務計劃程式庫中.
- 右鍵這個新任務點選執行.
- 回到日誌資料夾下面 看看對應的日誌是不是被刪除了了.
使用IIS Log Cleaner Tool刪除老日誌
在這http://www.erezbenari.com/IISLogCleaner.exe 下載這個工具 這個不是微軟官方的工具