1. IIS 日志概述
IIS 默认记录所有 HTTP 请求的详细信息,包括客户端 IP、请求时间、URL、状态码、响应大小等,是运维排查问题的重要依据。
日志存储位置
默认路径:%SystemDrive%\inetpub\logs\LogFiles\
每个站点有独立子目录,命名格式:W3SVC{SiteID}
日志格式
| 格式 | 说明 | 适用场景 |
|---|---|---|
| W3C | 自定义字段,文本格式,默认格式 | 通用、推荐 |
| NCSA | 固定字段,Apache 兼容格式 | 日志分析工具兼容 |
| IIS | IIS 专用二进制格式 | 性能最优 |
2. 配置日志
1
选择网站 → 双击"日志"
2
配置:
- 格式:W3C(默认)
- 目录:
D:\IISLogs\MyWebSite(建议修改到非系统盘) - 计划:每天创建新文件
3
点击"选择字段",勾选需记录的字段:
- ✅ date、time、s-ip、cs-method、cs-uri-stem、cs-uri-query
- ✅ s-port、cs-username、c-ip、cs(User-Agent)、sc-status
- ✅ sc-substatus、sc-win32-status、time-taken
4
应用 → 确认日志文件已在新目录生成
PowerShell - 日志配置
# 修改日志目录
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
-Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
-Name "directory" -Value "D:\IISLogs\MyWebSite"
# 设置日志格式为 W3C
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
-Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
-Name "logFormat" -Value "W3C"
# 设置日志轮转周期(每日)
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
-Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
-Name "period" -Value "Daily"
3. 日志分析
PowerShell - 日志查询分析
# 导入 IIS 日志模块
Import-Module "WebAdministration"
# 统计最近 1 小时的 404 错误
$logPath = "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log"
$logs = Import-Csv -Path $logPath -Delimiter ' '
$logs | Where-Object { $_.'sc-status' -eq '404' } | Measure-Object
# 统计访问量 Top 10 IP
$logs | Group-Object 'c-ip' | Sort-Object Count -Descending | Select-Object -First 10 | Format-Table Name, Count
# 按状态码统计
$logs | Group-Object 'sc-status' | Sort-Object Count -Descending | Format-Table Name, Count
4. 性能监控
PowerShell - 性能计数器
# 获取 IIS 相关性能计数器
Get-Counter -Counter "\Web Service(*)\Total Method Requests/sec" -SampleInterval 1 -MaxSamples 5
# 当前连接数
Get-Counter -Counter "\Web Service(*)\Current Connections"
# 工作进程状态
Get-Process w3wp | Select-Object Id, ProcessName, CPU, WorkingSet
# 应用程序池状态
Get-IISAppPool | Select-Object Name, State, ManagedRuntimeVersion | Format-Table -AutoSize
5. 常见问题
Q1:日志文件占用过多磁盘空间
设置日志保留策略:使用任务计划定期清理超过 30 天的日志文件。或配置日志压缩与归档。
Q2:如何分析大规模日志
推荐使用 Log Parser 工具(微软官方),支持 SQL 语法查询日志,性能优异。也可导入 ELK Stack 或 Splunk 进行可视化分析。
Q3:日志时间与服务器时间不一致
W3C 格式默认使用 UTC 时间。可在日志配置中勾选"使用本地时间进行文件命名和滚动",或在分析时进行时区转换。