目录
目录X
IIS日志压缩脚本
客户服务器有很多网站,有些网站还有200M的首页静态数据(有点夸张),导致他一天的iis日志特别多,偶尔遇到有爬虫的请求多的,一天十来个G也不在话下。所以用脚本将日志定期压缩是个很明智的选择。这里用到7Z,压缩后的日志只有原来十分一大小。
将其保存为ps1文件,并且添加到计划日常任务里面。
# ===== 配置 =====
$LogRoot = "E:\web_logs\LogFiles"
$SevenZipPath = "C:\Program Files\7-Zip\7z.exe"
# 获取今天日期
$Today = (Get-Date).ToString("yyyy-MM-dd")
Write-Host "今天日期: $Today"
# 遍历所有 IIS 站点目录
Get-ChildItem $LogRoot -Directory | ForEach-Object {
$SiteDir = $_.FullName
Write-Host "处理站点目录: $SiteDir"
Get-ChildItem $SiteDir -Filter "*.log" | ForEach-Object {
$LogFile = $_.FullName
$FileDate = $_.LastWriteTime.ToString("yyyy-MM-dd")
# 只处理非今天日志
if ($FileDate -ne $Today) {
$ZipFile = Join-Path $SiteDir ($_.BaseName + ".zip")
# 压缩成单独 zip
$7zCommand = "`"$SevenZipPath`" a -tzip `"$ZipFile`" `"$LogFile`" -mx=3"
$process = Start-Process -FilePath $SevenZipPath -ArgumentList "a", "-tzip", $ZipFile, $LogFile, "-mx=3" -Wait -PassThru
if (Test-Path $ZipFile) {
Remove-Item $LogFile -Force
Write-Host "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 压缩并删除: $LogFile -> $ZipFile"
} else {
Write-Host "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] ⚠️ 压缩失败: $LogFile"
}
}
}
}
Write-Host "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 所有站点处理完成"