在日常运维中,很多站长和开发人员都需要查看网站的访问情况。比如你刚上线了一个内部管理系统,老板问“昨天谁登录了?”这时候如果没有日志,真是一头雾水。其实IIS自带的网络日志功能就能帮你解决这个问题,关键是要会设置。
日志存放在哪里?
默认情况下,IIS的日志文件保存在 C:\inetpub\logs\LogFiles 目录下,每个站点都有独立的文件夹。打开后你会看到一堆以 u_ex 开头的文本文件,格式是W3C标准的,可以用记事本或者Excel打开查看。
开启或修改日志设置
进入IIS管理器,选择你要配置的网站,双击“日志”功能模块。这里有几个关键选项需要注意:
- 日志文件rollover:建议设为“每天”,避免一个文件太大不好查看;
- 日志文件目录:可以自定义路径,比如放到D盘方便备份;
- 日志格式:保持W3C即可,兼容性最好。
自定义记录哪些字段
点击“选择字段”按钮,你可以决定记录哪些信息。常见的有用字段包括:
- 日期(date)
- 时间(time)
- 客户端IP(c-ip)
- 请求方法(cs-method)
- 请求路径(cs-uri-stem)
- 状态码(sc-status)
- 用户代理(cs(User-Agent))
比如你想知道是谁用手机访问了登录页,就把User-Agent加上,后面分析时就能识别设备类型。
通过命令行快速启用日志
如果你管理多台服务器,手动点鼠标太慢,可以用命令行批量设置。例如:
appcmd set config "Default Web Site" /section:httpLogging /dontLog:False /selectiveLogging:LogAll
这条命令会开启指定站点的日志记录。如果只想记录错误请求(比如404、500),可以调整 selectiveLogging 的值为 LogError。
结合数据库做日志分析
原始日志是文本文件,不方便统计。我们可以把日志导入SQL Server进行查询分析。比如写个PowerShell脚本定期读取最新的log文件,解析后插入到数据库表中。
建一张表来存储日志数据:
CREATE TABLE IISLogs (
LogDate DATETIME,
ClientIP NVARCHAR(50),
Method NVARCHAR(10),
UriStem NVARCHAR(255),
StatusCode INT,
UserAgent NVARCHAR(500)
);
然后用BULK INSERT或SSIS导入数据,之后就能用SQL查“昨天有多少次404”、“哪个IP访问最频繁”这类问题了。
小贴士:别让日志占满磁盘
有个真实案例:同事的服务器突然报警磁盘100%,排查发现是IIS日志一年多没清理,累计超过80GB。建议设置日志保留策略,比如只保留30天,老文件自动删除。
可以在日志设置里勾选“最多保留日志文件”,并设置最大文件数量,这样系统会自动轮替旧文件,避免爆盘。