原文:http://www.iis.net/learn/manage/provisioning-and-managing-iis/managing-iis-log-file-storage

Overview

IIS日誌會消耗大量的硬碟空間,有潛在寫滿整個硬碟空間的風險. 為了解決這個問題很多使用者會選擇關閉日誌.幸運的是 這裡有些其它的選擇:

你可以根據下面的方案控制硬碟的使用率:

  • 通過減少不必要的欄位減少日誌大小
  • 根據網站和應用程式建立獨立的日誌
  • Preserve memory resources by using centralized binary logging.

更多請見 Configuring Logging in IIS.

壓縮日誌資料夾

IIS日誌檔案壓縮原始大小的2%. 通過下面的方法壓縮日誌資料夾. 執行下面的步驟前請確保你擁有管理員許可權.

  1. 點選檔案資源管理器.
  2. 進入到IIS日誌資料夾 (預設是, %SystemDrive%\inetpub\logs\LogFiles).
  3. 右鍵日誌資料夾選擇屬性.
  4. 在屬性的常規標籤點選高階.
  5. 選中壓縮內容以便節省磁碟空間,然後點選確定.
  6. 點選應用Click Apply,選擇壓縮所有子資料夾和檔案.
  7. 點選確定. 如果資料夾的檔名變成藍色了那麼你的操作成功了.

這是個減少日誌佔用硬碟空間的簡單方法, 不是最終的解決方案. 然後以為日誌檔案一天天的增漲最後還是會沾滿硬碟空間.

如果日誌資料夾下有大量的日誌,壓縮日誌資料夾的過程可能會稍長一些,建議在網站伺服器的非高峰期壓縮日誌資料夾.

將日誌資料夾移到遠端系統上去

IIS日誌檔案預設儲存在IIS伺服器的 %SystemDrive%\inetpub\logs\LogFiles  下面.你可以把IIS日誌資料夾移去一個有更多硬碟空間的伺服器上面去.

將IIS日誌資料夾設為遠端伺服器的方法步驟如下:

  1. 在遠端伺服器上建立一個資料夾作為日誌資料夾.
  2. 右鍵這個資料夾選擇屬性, 在共享標籤下點選共享. 在安全標籤下, 分配相應的許可權. 確保合適的組或使用者名稱有讀寫日誌檔案的許可權.

    更多請見 Configuring Permissions for Remote Logging.

    Note: 如果你像將日誌檔案寫到一個不同domain的遠端伺服器上請看看這篇文章 Setting Up a Null Session for Cross-Domain Logging.

  3. 開啟IIS管理器.
  4. 點選伺服器或者某個網站.
  5. 雙擊日誌圖示.
  6. 在目錄的文字框內輸入1中建立的遠端共享的日誌檔案的路徑. 例如 輸入 \\servername\Logs
  7. 在右邊的操作面板點選應用並且確認.

    更多請見 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任務自動呼叫上面的指令碼定時清除老日誌, 方法步驟如下.

    1. 開啟任務計劃程式.
    2. 在操作面板中點選建立任務.
    3. 在常規tab中的名字中輸入任務名字,如 "Delete Log Files". 在安全選項中選擇有許可權的合適的使用者來執行這個任務指令碼.
    4. 在觸發器tab中點選新建.  非常簡單按照下面的圖片來設定就行了.
    5. 點選操作Tab, 點選新建. 在操作中選擇啟動程式. 在程式或指令碼中輸入cscript, 在新增引數中 輸入上面指令碼的路徑和檔名, 例如, "C:\iis\Log_File_Deletion.vbs".
    6. 點選確定.
    7. 驗證任務是否被新增到了任務計劃程式庫中.
    8. 右鍵這個新任務點選執行.
    9. 回到日誌資料夾下面 看看對應的日誌是不是被刪除了了.

使用IIS Log Cleaner Tool刪除老日誌

在這http://www.erezbenari.com/IISLogCleaner.exe 下載這個工具 這個不是微軟官方的工具