【问题标题】:IIS 7 Log Files Auto Delete?IIS 7 日志文件自动删除?
【发布时间】:2011-10-18 15:45:10
【问题描述】:

IIS 7 中是否有任何功能可以自动删除超过指定天数的日志文件?

我知道这可以通过编写脚本(并每周运行它)或 Windows 服务来完成,但我想知道是否有任何内置功能或可以做到这一点的东西。

此外,目前我们关闭了注销,因为它会堆积大量空间。会有问题吗?

【问题讨论】:

  • 我不知道,我同意应该有。我使用 PowerShell 脚本来压缩和归档它们。日志文件有时可用于获取发票统计信息或调查黑客尝试。
  • 对于所有的点赞、收藏和回答,这显然是题外话,属于Server Fault

标签: asp.net iis-7


【解决方案1】:

另一个可行的 Powershell 单线:

Get-ChildItem -Path c:\inetpub\logs\logfiles\w3svc*\*.log | where {$_.LastWriteTime -lt (get-date).AddDays(-180)} | Remove-Item -force

如果$_.LastWriteTime 不起作用,您可以改用$PSItem.LastWriteTime

有关利用 IIS LogFiles 文件夹 HDD 空间使用的更多信息和其他建议,我还建议 read this blog post 我在该主题上写过。

【讨论】:

    【解决方案2】:

    一行批处理脚本:

    forfiles /p C:\inetpub\logs /s /m *.log /d -14 /c "cmd /c del /q @file"
    

    修改 /d 开关以更改日志文件在删除之前挂起的天数。 /s 开关也递归子目录。

    参考:http://debug.ga/iis-log-purging/

    【讨论】:

      【解决方案3】:

      类似的解决方案,但在 powershell 中。

      我已经设置了一个任务来运行 powershell 并以下面的行作为参数..

      dir D:\IISLogs |where { ((get-date)-$_.LastWriteTime).days -gt 15 }| remove-item -force
      

      它会删除 D:\IISLOgs 文件夹中超过 15 天的所有文件。

      【讨论】:

        【解决方案4】:

        您可以使用管理工具 > 任务计划程序创建每天运行的任务。

        将您的任务设置为运行以下命令:

        forfiles /p "C:\inetpub\logs\LogFiles" /s /m *.* /c "cmd /c Del @path" /d -7
        

        此命令适用于 IIS7,它会删除所有一周或更早的日志文件。

        您可以通过更改/d arg 值来调整天数。

        【讨论】:

        • 这正是我所需要的。日志已经在异地备份,因此使用此任务删除旧日志对我来说非常有用。
        • 简单有效:)
        • 完美!另一个让我知道forfiles 命令的好处,谢谢:)