IIS日志清理专题,CMD版,VBS版,JS版,WSH版
来源:互联网 发布:阿里大数据分析 编辑:程序博客网 时间:2024/06/05 03:36
完整无错版请点击:
IIS日志清理专题,CMD版,VBS版,JS版,WSH版
专题名称: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日志清理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 '递归 NextEnd FunctionDelIISLog "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日志清理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",5DelIISLog("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>
<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-beforedaysIf 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 pWshShell.Run ("cmd.exe /c del /s " & p)Set WshShell = NothingEnd FunctionDelIISLog "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日志清理之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 IfEnd 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 IfEnd FunctionCreateFolder "D:/IISLogTest"CreateFolder "D:/IISLogTest/IISLogs001"CreateFolder "D:/IISLogTest/IISLogs002"CreateFolder "D:/IISLogTest/IISLogs003"for i=1 to 30d=date-ifilename="ex" & right(year(d),2) & right("0" & month(d),2) & right("0" & day(d),2) & ".log"CreateFile "D:/IISLogTest/" & filename,ContentCreateFile "D:/IISLogTest/IISLogs001/" & filename,ContentCreateFile "D:/IISLogTest/IISLogs002/" & filename,ContentCreateFile "D:/IISLogTest/IISLogs003/" & filename,Contentnext
后记:这个方法不仅可以用在IIS日志处理方面,还可以用在处理Serv-U的日志处理,前提条件是Serv-U的日志文件的格式也得设成像IIS日志这样的格式ex071115.log。
引用本页地址:http://www.yongfa365.com/item/DelIISLog.cmd-DelIISLog.vbs-DelIISLog.js-DelIISLog.wsh-yongfa365.html
- IIS日志清理专题,CMD版,VBS版,JS版,WSH版
- IIS日志清理CMD版的解释
- iis日志搜索引擎相关访问次数统计vbs版
- IIS日志自动清理
- vbs版进程管理
- 半角全角互转函数[JS版 VBS版]
- 删除IIS日志及备份VBS
- 服务器日志清理及IIS日志的清理
- VBS基础教程(第二版)
- VBS教程(文本版)
- VBS+CMD
- 虫虫免杀--虫虫变形工具vbs版
- 编程控制网卡启用停用vbs版
- VBS版BrainFuck语言解释器
- vbs版的音乐播放器
- vbs实现无需交互版runas
- Windows下WSH/JS实现SVN服务器钩子脚本阻止提交空日志信息和垃圾文件
- 一键清理Eclipse版
- dumprep.exe
- 闲谈原码、反码、补码
- 了解到
- dvdkeyauth.exe
- Phidgets How To: Creating a Windows CE 6.0 OS Design for Development With Phidgets Devices
- IIS日志清理专题,CMD版,VBS版,JS版,WSH版
- Struts常见错误及原因分析
- 计算基础正在发生根本变革——解读“计算2.0”
- dvdlauncher.exe
- Nero Burning ROM 可以靠边了
- 理解矩阵(一)
- DVDRegionFree.exe
- 理解矩阵(二)
- ASP.NET随机码生成示例