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天前的日志