我怎样才能保持定期清理IIS日志文件?

我刚刚发现IIS无限期地build立了日志,似乎没有任何IIS设置可以自动清除旧的日志文件。 什么是最好的方式来保持我的IIS日志在控制之下,以便他们不填满整个硬盘驱动器?

你将不得不运行一个计划任务来做到这一点。 这是一个应该工作的Powershell脚本。

set-location c:\windows\system32\Logfiles\W3SVC1\ -ErrorAction Stop foreach ($File in get-childitem -include *.log) { if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) { del $File } } 

这应该清除超过30天前最后修改的任何内容。 将第一行中的path更改为存储日志文件的位置。 还要更改-30,然后再保留这些文件。 -30表示您将删除超过30天的任何内容。

如果您不想使用LastWriteTime,则可以查看显示FileInfo对象的不同属性的本文

你可以自己酝酿,但我相信有一个聪明的人已经为你写了这个。 检查出IISLogs & IISLogs精简版!

如果您所做的只是删除日志,那么如果不需要,您可以closures日志loggingfunction! 你会保存你的服务器很多的I / O!

那么,如果你想定期清理它们,那你为什么不在IIS中禁用请求日志? 你可能会使用谷歌分析或其他一些服务,我看到很多人这个东东,以避免头痛的IIS日志影响性能和吃掉所有磁盘空间,但这一切都取决于您的要求当然。

我目前正在使用一个非常简单的batch file脚本来执

 forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File" 

我也做了一个计划任务条目来启动它每天,甚至激活该文件夹的文件压缩function:所有这些东西一起解决了我的问题与IIS文件好。

batch file中的开关说明:

  • -s或/ S:recursion到所有子文件夹中
  • -p或/ P:path
  • -m或/ M:文件掩码
  • -d或/ D:天数(-180 =大于180天)
  • -c或/ C:执行命令

如果您正在寻找一个可行的Powershell替代scheme,请参阅其他答案 :有关如何正确减lessIIS LogFiles文件夹的其他build议, 请查看此帖 。

微软在其网站上build议一个脚本 。

下面是我用于我需要的修改版本。

 Wscript.Echo "Starting log removal" sLogFolder = "d:\retentiontest" iMaxAge = 30 'in days Set objFSO = CreateObject("Scripting.FileSystemObject") set colFolder = objFSO.GetFolder(sLogFolder) Wscript.Echo "Removing log files from folder: " & colFolder For Each colSubfolder in colFolder.SubFolders Set objFolder = objFSO.GetFolder(colSubfolder.Path) Set colFiles = objFolder.Files For Each objFile in colFiles iFileAge = now-objFile.DateLastModified if iFileAge > (iMaxAge+1) then Wscript.Echo "Removing File: " & objFile.Name objFSO.deletefile objFile, True end if Next Next 

请注意,我已经从“DateCreated”更改为“DateLastModified”,因为违反date创build的date可能比上次修改时间晚,可能与复制文件的情况相同。 您可能不想删除最近更新的文件。

然后使用cscript.exe运行它(例如, cscript.exe d:\scripts\logRetentionScript.vbs )。

在服务器上创build一个计划任务。 在操作部分,您需要:

  • 行动:启动一个程序
  • 设置:Program = Forfiles
  • 添加参数:-p“C:\ inetpub \ logs \ LogFiles”-s -m / D -45 / C“cmd / c del @path”
  • 开始于:C:\

给它每天或每周的时间表。 完成。