您当前的位置:首页 > seo技术 > 清除IIS日志文件的方法


清除IIS日志文件的方法

作者:大红SEO 时间:2015-10-23 21:48:28 来源:

很多使用Windows IIS的站长可能都会遇到这个问题,就是服务器的IIS日志增长经常会导致磁盘空间被占满,而IIS也没有自动删除日志的功能,因此需要经常关注即时清理 日志,在此,马海祥就为大家介绍以下几个能够删除IIS日志的方法,在下边的解决方案里请大家可以选择适合自己的。BBB大红seo
BBB大红seo
1、手动清除IIS日志释放空间BBB大红seo
BBB大红seo
维 护项目过程中,一次注意到虚拟主机突然死机了,查看了下,C盘只有几十兆大小,进一步查找问题,发现“C:/WINDOWS/system32 /LogFiles/W3SVC1/”下有几G的日志文件,网络查询了下,原来是虚拟主机的日志文件常时间得不到清理,占据了磁盘空间,导致程序崩盘。BBB大红seo
BBB大红seo
打开“我的电脑”发现10GB容量的C盘只剩余355MB“可用空间”,已经严重不够用,如下图:BBB大红seo
BBB大红seo
清除IIS日志文件的方法技巧-马海祥博客BBB大红seo
BBB大红seo
如果服务器的管理员并没有在C盘存储大容量文件,而IIS中站点的访问量又非常大,那么C盘的磁盘容量有90%的可能性是被IIS日志记录文件占用了(具体可查看马海祥博客《IIS日志的作用有哪些》的相关介绍)。BBB大红seo
BBB大红seo
IIS存放日志文件的默认存储路径是c:windowssystem32logfiles,我们依次打开“我的电脑”,C盘,Windows文件夹,system32文件夹,logfiles文件夹,发现里面还有多个子文件夹,每个文件夹都对应一个IIS站点。BBB大红seo
BBB大红seo
我们逐个打开这些文件夹查看,发现里面有大量以.log后缀结尾的文件,这就是IIS日志文件,它们不仅数量多,而且每个文件占用字节数也大,如下图:BBB大红seo
BBB大红seo
清除IIS日志文件的方法技巧-马海祥博客BBB大红seo
BBB大红seo
我们全选这些文件,然后按Shift+DEL强行删除,再打开“我的电脑”,发现C盘“可用空间”由刚才的355MB提升到6.73GB。BBB大红seo
BBB大红seo
清除IIS日志文件的方法技巧-马海祥博客BBB大红seo
BBB大红seo
2、如何不记录IIS日志BBB大红seo
BBB大红seo
如果网站的访问量特别大,管理员觉得每段时间都需要去清除一次IIS日志比较麻烦,那么在IIS的站点中设定可以不记录IIS日志,方法如下:BBB大红seo
BBB大红seo
清除IIS日志文件的方法技巧-马海祥博客BBB大红seo
BBB大红seo
打开“Internet信息服务(IIS)管理器”,选择到不需要记录IIS日志的站点,按下鼠标右键,选择“属性”,在默认的“网站”选项卡中将“启用记录的复选勾”去掉,点“确定”,如下图:BBB大红seo
BBB大红seo
设置完成后,再重启IIS或者服务器,设置即可生效。BBB大红seo
BBB大红seo
3、自动删除IIS日志的程序BBB大红seo
BBB大红seo
这个删除程序的功能很简单,每天自动删除N天前的日志(时间根据情况自己设置,一般设置为30天),可以使用DOS批处理或VBS脚本来实现,总体设计思路是这样的:BBB大红seo
BBB大红seo
IIS日志文件的格式是:ex年月日.log,比如:ex071116.logBBB大红seo
BBB大红seo
IIS日志文件存储位置,默认情况下是在:%windir%system32LogFiles,如果您使用的是专业的IIS管理软件,里面一般会让你设置相应日志目录(具体可查看马海祥博客《在服务器上设置网站IIS日志的方法步骤》的相关介绍)。BBB大红seo
BBB大红seo
IIS 日志清理批处理版:跟据当前时间计算出前N天的日期,比如今天是:2015-10-12,前60天的日期就是2015-8-12(程序可以自动识别30天 或31天或润月),然后再处理成20150812这样的格式,然后再组合成ex150812.log这样的IIS日志文件格式,这样一来我们就得到的要清 理的日志文件名然后,我们再使用del/s/f d:iislogex070916.log来清除日志所在文件夹目录及子目录下的所有这个文件名的文件了,从而清除志。BBB大红seo
BBB大红seo
但这个仅仅是清除一天的日志,所以我们还得把这个批处理加到计划任务里,让它每天定时执行,这样一来,所有的计算机的日志问题我们就可以不用管了。BBB大红seo
BBB大红seo
IIS日志清理VBS版:VBS版理论是没有iis版快,因为他还要借助脚本驱动,而不像cmd版直接使用dos系统的批处理功能快(猜的),VBS毕竟是高级语言,处理日期的能力用一句话就实现了,而CMD版得写半页。BBB大红seo
BBB大红seo
IIS 日志清理VBS版的实现用VBS遍历IIS日志所在目录下的所有文件,及文件夹,然后取文件名组合成日期型的,然后当前日期-这个日期,看看是不是超过了 设定的天数,超过的话delete,这种思路有个好处就是一次可以清除N天前的所有记录,而不是只是一天的,他可以你CMD版日志清理一样,把这个脚本写 到计划任务里,天天运行,也可以过一段时间手动运行一次,这个代码明显比IIS日志清理CMD版少了。BBB大红seo
BBB大红seo
IIS日志清理CMD版代码(DelIISLog.bat)代码如下:BBB大红seo
BBB大红seo
    @echo offBBB大红seo
    titleBBB大红seo
    ::设置当前日期前多少天或后多少天BBB大红seo
    set/a beforedays=-3BBB大红seo
    ::设置目录所在位置BBB大红seo
    set dir="F:log"BBB大红seo
    ::当前日期转换为天数并进行计算BBB大红seo
    call :Date2Day %date:~0,10% daysBBB大红seo
    set/a days=%days%%beforedays%BBB大红seo
    call :Day2Date %days% lastdateBBB大红seo
    ::计算完毕,生成想要的字符组合BBB大红seo
    set okstr=ex%lastdate:~2,6%.logBBB大红seo
    ::删除这些文件BBB大红seo
    del del /f /s /q %dir%%okstr%BBB大红seo
    cmd /kBBB大红seo
    :Date2DayBBB大红seo
    setlocal ENABLEEXTENSIONSBBB大红seo
    for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (BBB大红seo
    set yy=%%a & set mm=%%b & set dd=%%cBBB大红seo
    )BBB大红seo
    set /a dd=100%dd%%%100,mm=100%mm%%%100BBB大红seo
    set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2BBB大红seo
    set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633BBB大红seo
    endlocal&set %2=%j%&goto :EOFBBB大红seo
    :Day2DateBBB大红seo
    setlocal ENABLEEXTENSIONSBBB大红seo
    set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=aBBB大红seo
    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/=5BBB大红seo
    set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10BBB大红seo
    (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)BBB大红seo
    endlocal&set %2=%yy%%mm%%dd%&goto :EOFBBB大红seo
BBB大红seo
IIS日志清理VBS版代码(DelIISLog.vbs)代码如下:BBB大红seo
BBB大红seo
    'IIS日志清理VBS版代码(DelIISLog.vbs)BBB大红seo
    '调用方法:DelIISLog "IIS日志所在路径",保留多少天的IIS日志BBB大红seo
    '遍历IIS日志文件夹下的所有文件及子文件夹下的文件BBB大红seo
    Function DelIISLog(IISLogPath,KeepDays)BBB大红seo
    on error resume nextBBB大红seo
    Set oFso = CreateObject("Scripting.FileSystemObject")BBB大红seo
    Set oFolder = oFso.GetFolder(IISLogPath)BBB大红seo
    Set oSubFolders = oFolder.SubFolders '得到该目录下所有的文件夹的集合BBB大红seo
    Set oFiles = oFolder.Files '得到该目录下所有的文件的集合BBB大红seo
    '第一步处理当前目录下的所有文件BBB大红seo
    For Each oFile In oFiles '遍历所有文件BBB大红seo
    if right(oFile.name,3)="log" thenBBB大红seo
    oDate=cdate("20" & mid(oFile.name,3,2) & "-" & mid(oFile.name,5,2) & "-" & mid(oFile.name,7,2))BBB大红seo
    if date-oDate > KeepDays then oFile.delete '判断是不是要处理的IIS日志文件,如果是的话直接删除BBB大红seo
    end ifBBB大红seo
    NextBBB大红seo
    '第二步处理当前目录下的所有目录,进行递归调用BBB大红seo
    For Each oSubFolder In oSubFoldersBBB大红seo
    DelIISLog oSubFolder.Path,KeepDays '递归BBB大红seo
    NextBBB大红seo
    End FunctionBBB大红seo
    DelIISLog "D:IISLogTest",20 '遍历BBB大红seo
BBB大红seo
总之,IIS在运行的过程中日志会不停地增长,若IIS的网站被频繁的调用或不当的调用,则会产生很多日志,对于系统盘或者磁盘空间不够的服务器来说,IIS日志自动清理则非常有必要。BBB大红seo

欢迎关注大红seo的博客,您也可以关注我的微信:beyondnever 或者加我QQ:502791664

.

在线客服

咨询客服