1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        IIS日志清理專題,CMD版,VBS版,JS版,WSH版

        發布時間:  2012/7/4 14:03:09
        專題名稱:IIS日志清理專題,CMD版,VBS版,JS版,WSH版

        關鍵詞:IIS日志清理,日志清理,IIS日志清理CMD版,IIS日志清理VBS版,IIS日志清理JS版,IIS日志清理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,所以一般安全意識比較高的服務器提供商都會把這個組件給禁用掉,這樣一來,這個最好用的功能就變成了最不能使 用的,通用性最差的了。

        實例代碼:

        IIS日志清理CMD版代碼(DelIISLog.cmd):

        @echo off
        title Made by www.yongfa365.com
        ::設置當前日期前多少天或后多少天
        set/a beforedays=-3
        ::設置目錄所在位置
        set   dir="F:\log\"
        ::當前日期轉換為天數并進行計算
        call :Date2Day %date:~0,10% days
        set/a days=%days%%beforedays%
        call :Day2Date %days% lastdate
        ::計算完畢,生成想要的字符組合
        set okstr=ex%lastdate:~2,6%.log
        ::刪除這些文件
        del del /f /s /q %dir%\%okstr%

        cmd /k

        :Date2Day
        setlocal ENABLEEXTENSIONS
        for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
        set yy=%%a & set mm=%%b & set dd=%%c
        )
        set /a dd=100%dd%%%100,mm=100%mm%%%100
        set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
        set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
        endlocal&set %2=%j%&goto :EOF

        :Day2Date
        setlocal ENABLEEXTENSIONS
        set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
        set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
        set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
        (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
        endlocal&set %2=%yy%%mm%%dd%&goto :EOF
        IIS日志清理VBS版代碼(DelIISLog.vbs):

        'IIS日志清理VBS版代碼(DelIISLog.vbs) Made by www.yongfa365.com
        '調用方法:DelIISLog "IIS日志所在路徑",保留多少天的IIS日志

        '遍歷IIS日志文件夾下的所有文件及子文件夾下的文件
        Function DelIISLog(IISLogPath,KeepDays)
        on error resume next
          Set oFso = CreateObject("Scripting.FileSystemObject")
          Set oFolder = oFso.GetFolder(IISLogPath)
          Set oSubFolders = oFolder.SubFolders '得到該目錄下所有的文件夾的集合
          Set oFiles = oFolder.Files '得到該目錄下所有的文件的集合
          '第一步處理當前目錄下的所有文件
          For Each oFile In oFiles '遍歷所有文件
            if right(oFile.name,3)="log" then
                  oDate=cdate("20" & mid(oFile.name,3,2) & "-" & mid(oFile.name,5,2) & "-" & mid(oFile.name,7,2))
                  if date-oDate > KeepDays then oFile.delete '判斷是不是要處理的IIS日志文件,如果是的話直接刪除
            end if
          Next
          '第二步處理當前目錄下的所有目錄,進行遞歸調用
          For Each oSubFolder In oSubFolders
            DelIISLog oSubFolder.Path,KeepDays '遞歸
          Next

        End Function

        DelIISLog "D:\IISLogTest",20 '遍歷
        IIS日志清理JS版代碼(DelIISLog.js):

        //IIS日志清理JS版代碼(DelIISLog.js) Made by www.yongfa365.com
        //調用方法:DelIISLog("IIS日志所在路徑",保留多少天的IIS日志);

        //遍歷IIS日志文件夾下的所有文件及子文件夾下的文件
        function DelIISLog(IISLogPath,KeepDays){
             var fso = new ActiveXObject("Scripting.FileSystemObject");
             var f = fso.GetFolder(IISLogPath);
             var Folders = new Enumerator(f.SubFolders); //得到該目錄下所有的文件夾的集合
             var Files = new Enumerator(f.Files); //得到該目錄下所有的文件的集合
             //第一步處理當前目錄下的所有文件
             for (; !Files.atEnd(); Files.moveNext()) {
                var fileName = Files.item().name;
                var year = "20" + fileName.substr(2, 2);
                var mouth = fileName.substr(4, 2);
                var day = fileName.substr(6, 2);
                var days = Math.round(((new Date()).getTime() - Date.UTC(year, mouth - 1, day)) / 1000 / 60 / 60 / 24);
                if (days > KeepDays) Files.item().Delete(); //判斷是不是要處理的IIS日志文件,如果是的話直接刪除
             }
             //第二步處理當前目錄下的所有目錄,進行遞歸調用
             for (; !Folders.atEnd(); Folders.moveNext()) {
                   DelIISLog(Folders.item(),KeepDays);
             }
        }
        //調用函數,比如:"F:\\log",5 或 "C:\\windows\\system32\\LogFiles",5
        DelIISLog("D:\\IISLogTest",2);
        IIS日志清理WSH版代碼(DelIISLog.wsf):

        <job id="IIS日志清理WSH版代碼(DelIISLog.wsf) Made by www.yongfa365.com">
             <script language="vbscript">
                   '作者:柳永法(yongfa365)'Blog
                   '修改:2007-11-15
                   '操作說明:此文件只能清除一天的日志,得使用計劃任務讓其每天執行一次,因為服務器上一般都禁用WScript.Shell,所以不推薦使用
                   Function DelIISLog(IISLogPath,beforedays)
                         d=Now-beforedays
                         If Right(IISLogPath,1) <> "\" Then IISLogPath=IISLogPath & "\"
                         p= IISLogPath & "ex" & Right(Year(d),2) & Right("0" & Month(d),2) & Right("0" & Day(d),2) & ".Log"
                         Set WshShell = WScript.CreateObject("WScript.Shell")
                         wscript.echo p
                         WshShell.Run ("cmd.exe /c del /s " & p)
                         Set WshShell = Nothing
                   End Function

                   DelIISLog "D:\IISLogTest",2
             </script>
        </job>
        有時我拿到別人的代碼時我得寫一堆東西來測試,現在這個如果讓您去測試的話,您不會直接在服務器上測試吧,所以,以下再貼出本人柳永法的測試腳本,主要是在D盤生成一個測試文件夾,及一些IIS測試日志文件,

        IIS日志清理之IIS日志生成系統(CreateIISLog.vbs):

        'IIS日志清理之IIS日志生成系統(CreateIISLog.vbs) Made by www.yongfa365.com
        '創建文件夾
        Function CreateFolder(Folder)
          On Error Resume Next
          Set FSO = CreateObject("Scripting.FileSystemObject")
          FSO.CreateFolder(Folder)
          If Err>0 Then
            Err.Clear
            CreateFolder = False
          Else
            CreateFolder = True
          End If
        End Function
        '創建文件
        Function CreateFile(FileName, Content)
          On Error Resume Next
          Set FSO = CreateObject("Scripting.FileSystemObject")
          Set fd = FSO.CreateTextFile(FileName, True)
          fd.WriteLine Content
          If Err>0 Then
            Err.Clear
            CreateFile = False
          Else
            CreateFile = True
          End If
        End Function

        CreateFolder "D:\IISLogTest"
        CreateFolder "D:\IISLogTest\IISLogs001"
        CreateFolder "D:\IISLogTest\IISLogs002"
        CreateFolder "D:\IISLogTest\IISLogs003"
        for i=1 to 30
             d=date-i
             filename="ex" & right(year(d),2) & right("0" & month(d),2) & right("0" & day(d),2) & ".log"
             CreateFile "D:\IISLogTest\" & filename,Content
             CreateFile "D:\IISLogTest\IISLogs001\" & filename,Content
             CreateFile "D:\IISLogTest\IISLogs002\" & filename,Content
             CreateFile "D:\IISLogTest\IISLogs003\" & filename,Content
        next
        后記:這個方法不僅可以用在IIS日志處理方面,還可以用在處理Serv-U的日志處理,前提條件是Serv-U的日志文件的格式也得設成像IIS日志這樣的格式ex071115.log。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          1
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线