如何定期清理IIS日志文件?


20

我刚刚发现IIS无限期地建立日志,并且似乎没有任何IIS设置可以自动清除旧的日志文件。什么是使IIS日志受到控制以免它们填满整个硬盘驱动器的最佳方法?


您是将旧文件保留在zip存档中还是将其删除?
杰夫·阿特伍德

您应该自己管理日志文件。
埃文·安德森

CCLeaner有一个清除IIS日志文件的选项!

Answers:


22

您必须运行预定的任务才能执行此操作。这是一个应该起作用的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天内最后修改的所有内容。将第一行中的路径更改为存储日志文件的位置。还要将-30更改为想要保留文件的时间。-30表示您将删除30天之前的任何内容。

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


1
在Windows Server 2008 R2(PS 2.0)上,我不得不将Get-ChildItem调用修改为Get-ChildItem *.* -include *.log
roryWoods

4

您可以自己酿造啤酒,但是我相信已经有一个聪明的人为您写过这篇文章。查看IISLogsIISLogs Lite!

如果您要做的只是删除日志,则可以关闭不需要的日志!您将为服务器节省大量I / O!


1
只是一个更新,但是IISLogs Lite已有一段时间没有使用,并且IISLogs 并不便宜。
培根钻头

3

我目前正在使用非常简单的批处理文件脚本来执行此操作:

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

我还创建了“ 计划任务”条目以每天启动它,甚至激活了该文件夹上的文件压缩功能:所有这些共同解决了IIS文件的问题。

批处理文件中的开关说明:

  • -s或/ S:递归到所有子文件夹
  • -p或/ P:路径
  • -m或/ M:文件掩码
  • -d或/ D:天数(-180 =早于180天)
  • -c或/ C:要执行的命令

如果你正在寻找一个可行的Powershell的选择,看到这个其他的答案:有关如何正确降低IIS LogFiles文件夹,其他建议看看这篇文章


2

好吧,如果您想定期清理它们,那为什么不禁用IIS中的请求日志记录呢?您可能会使用诸如Google Analytics(分析)之类的服务或其他一些服务,为了避免IIS日志影响性能并耗尽所有磁盘空间的麻烦,我看到很多人对此感到头痛,但这当然取决于您的要求。


1

微软建议在其网站上使用脚本

以下是我正在使用的修改版本。

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”,因为与直觉相反的创建日期可以晚于上次修改的日期,就像复制文件一样。您可能不想删除最近更新的文件。

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


0

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

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

给它一个每日或每周的时间表。做完了

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.