IIS日志清理(VBS版,JS版)

IIS默认日志记录在C:WINDOWSsystem32LogFiles,时间一长,特别是子站点多的服务器,一个稍微有流量的网站,其日志每天可以达到上百兆,这些文件日积月累会严重的占用服务器磁盘空间。有必要对他们进行定期删除。

测试了一下网络上收集来的日志清理脚本,记录一下。自动清除日志目录下所有日志文件夹180天以前的日志文件,亲测有效。

VBS版

'IIS日志清理VBS版代码(DelIISLog.vbs) 
'调用方法: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 "C:WINDOWSsystem32LogFiles",180 '遍历 

  

JS版

//IIS日志清理JS版代码(DelIISLog.js) 
//调用方法:dellogfile(180),保留多少天的IIS日志
function dellogfile(beforedays)
{
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var dir = fso.GetFolder("c:\WINDOWS\system32\LogFiles");    //改成你的 IIS 日志目录
    for (var fc = new Enumerator(dir.SubFolders); !fc.atEnd(); fc.moveNext()) 
   {
        if (fc.item().name.substr(0,5) == "W3SVC") 
       {
            for (var logfiles = new Enumerator(fc.item().Files); !logfiles.atEnd(); logfiles.moveNext()) 
     {
                var fileName = logfiles.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 >= beforedays) logfiles.item().Delete();
            }
        }
    }
}

dellogfile(180);//删除180天前的日志