推薦的一篇用多種腳本清理iis日誌的代碼第1/3頁

專題名稱:IIS日誌清理專題,CMD版,VBS版,JS版,WSH版

應用場合:主要用與虛擬主機,也可用於個人服務器

產生背景:2005年某月某日,一向運行正常的虛擬主機死機了,讓機房值班人員重啓數次,都不成,接顯示器進系統看,提示:C盤空間不足,半夜還得去機房處理,到機房後先斷網,再進系統發現有兩個地方有問題,C:\WINDOWS\system32\LogFiles文件有6G,還有一個就是Symantec隔離病毒的地方,到網上找了下,最大可能性是我們的虛擬主機的所有日誌都寫在這裏,並且沒人知道寫在這裏,鬱悶,在IIS裏看了下,還真是這麼回事,日誌天天都在長,當時公司訂單很多也沒人關注這個,當時清理了一下,系統正常,回到公司後把IIS日誌改到別的盤了。

解決方案:不過這不是最終解決方法呀,一個虛擬主機幾百個站點呢,有的站點一天就能產生幾百M的日誌文件,還得及時清理。
與是有了兩種解決方案:
1.每天清理前60天的日誌
2.過段時間清理一下60天前的日誌。
不過哪種方法都得采用技術處理,人工去刪除 的話除非你很專業,可以查找60天前的日誌文件來刪除,不過即便你技術很好,這種方法也是很費時的,最好的方法是:使用DOS批處理或腳本來實現,可使用到的腳本主要是vbs與js.

在下邊的解決方案裏有幾種方法大家可以選擇適合自己的,他們的總的設計思路是這樣的:

IIS日誌文件的格式是:ex年月日.log 比如:ex071116.log
IIS日誌文件存儲位置:默認情況下是在:%windir%\system32\LogFiles ,如果您使用的是專業的IIS管理軟件,裏面一般會讓你設置相應日誌目錄

IIS日誌清理CMD版:跟據當前時間計算出前N天的日期,比如今天是:2007-11-16,前60天的日期就是2007-9-16(程序可以自動識別30天或31天或潤月),然後再處理成20070916這樣的格式,然後再組合成ex070916.log這樣的IIS日誌文件格式,這樣一來我們就得到的要清理的日誌文件名然後,我們再使用del /s /f d:\iislog\ex070916.log 來清除日誌所在文件夾目錄及子目錄下的所有這個文件名的文件了,從而清除志,但這個僅僅是清除一天的日誌,所以我們還得把這個批處理加到計劃任務裏,讓它每天定時執行,這樣一來,所有的計算機的日誌問題我們就可以不用管了。

IIS日誌清理VBS版:VBS版理論是沒有iis版快,因爲他還要藉助腳本驅動,而不像cmd版直接使用dos系統的批處理功能快(猜的),VBS畢竟是高級語言,處理日期的能力用一句話就實現了,而CMD版得寫半頁。IIS日誌清理VBS版的實現用VBS遍歷IIS日誌所在目錄下的所有文件,及文件夾,然後取文件名組合成日期型的,然後當前日期-這個日期,看看是不是超過了設定的天數,超過的話delete,這種思路有個好處就是一次可以清除N天前的所有記錄,而不是隻是一天的,他可以你CMD版日誌清理一樣,把這個腳本寫到計劃任務裏,天天運行,也可以過一段時間手動運行一次。這個代碼明顯比IIS日誌清理CMD版少了。

IIS日誌清理JS版:這個版其實與IIS日誌清理VBS版差不了多少,思路都是一樣的,只是使用的腳本語言不一樣而已,還有就是調用時的兩個參數裏的每一個參數:目錄,這個目錄得寫成:D:\\iislog,以前都用vbs還當主要腳本,這次主要是要學C#了,聽說這兩種語言都差不多,正好也練習下,也沒花多少時間。

IIS日誌清理WSH版:WSH版其實是最簡單的,因爲他的集成化程度很高,操作過程是這樣的:使用vbs或js生成要處理的文件的文件名,然後再使用WScript.Shell執行cmd命令來處理,利用了IIS日誌清理CMD版及IIS日誌清理VBS版的優點,這個也是一次只能處理一天的日誌,當然您也可以把它改成處理多天的日誌。正因爲WSH集成化程度高,可以執行很多操作,所以黑客們都很喜歡這個,用的最多的也就是WScript.Shell,所以一般安全意識比較高的服務器提供商都會把這個組件給禁用掉,這樣一來,這個最好用的功能就變成了最不能使用的,通用性最差的了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章