|
默认情况下,志文IIS日志放在 %SystemDrive%\inetpub\logs\LogFiles 这个路径下。志文如果你装完IIS没改过任何配置,志文打开资源管理器,志文在C盘根目录依次进入 inetpub、志文logs、志文LogFiles,志文就能看到一堆以 W3SVC 开头的志文文件夹。每个文件夹对应一个网站站点,志文里面按日期生成 .log 文件。志文 这个默认路径有个前提:安装IIS时勾选了“日志”功能,志文并且没有手动调整过站点日志设置。志文我见过不少人装完系统后把 inetpub 整个删了,志文觉得这文件夹没用,志文结果IIS日志功能直接报错,志文站点倒是能跑,但日志一条都写不进去。所以如果你接手一台服务器发现找不到日志,先确认这个目录还在不在。 每个站点有独立的文件夹 LogFiles 下面的子文件夹命名规则是 W3SVC 加一个数字。这个数字就是站点的ID。默认网站通常是 W3SVC1,第二个建的站点是 W3SVC2,以此类推。你可以在 IIS 管理器里点开某个站点,看右侧“操作”栏里的“高级设置”,里面有个“ID”字段,和文件夹名对应。 举个例子:服务器上跑了三个站点,W3SVC1、W3SVC2、W3SVC3 三个文件夹就分别装着它们的日志。如果某个站点被删了,对应的文件夹不会自动消失,日志文件还留在那里,除非你手动清理。 日志文件长什么样 打开一个 .log 文件,头部是几行以 # 开头的注释,记录了日志格式版本、软件信息、开始日期。之后每一行就是一条请求记录,字段之间用空格分隔。默认的 W3C 扩展日志格式包含日期、时间、客户端IP、请求方法、URI、状态码这些。字段顺序不是固定的,取决于站点日志设置里勾选了哪些字段。 我习惯用 Log Parser 或者直接丢进 Excel 做透视。纯文本看也行,但几千行之后眼睛就花了。有个细节:日志文件是按UTC时间写的,不是服务器本地时间。排查问题时如果没注意这一点,时间线会对不上。 路径是可以改的 在 IIS 管理器里选中站点,双击“日志”图标,就能看到“目录”这一栏。默认是 %SystemDrive%\inetpub\logs\LogFiles,你可以改成任何本地路径,甚至网络共享路径。改完之后新日志写到新位置,旧日志不会自动搬过去。 改路径这事在生产环境里挺常见。系统盘空间有限,日志一天几个G的话很快就撑爆C盘。把日志目录指到数据盘或者专门的日志盘,是基本操作。还有一种做法是按站点分盘存放,避免单个磁盘IO过高。 找不到日志的几种情况 日志功能被关了。站点级别的“日志”设置里,如果“启用”没勾,那就什么都不写。IIS整体也可以禁用日志,在服务器级别的“日志”功能里操作。 权限问题。IIS写日志用的是 IIS_IUSRS 组或者应用程序池标识,如果目标文件夹的NTFS权限没给够,日志写入会静默失败。事件查看器里可能有W3SVC的警告,但不一定显眼。 磁盘满了。这个不用多说,写不进去就是写不进去。 还有一种比较隐蔽的:站点停了。站点停止状态下不会有新请求,自然也没有新日志。但已有的日志文件还在原地。 日志滚动和清理 默认设置下,IIS按天创建新日志文件,不自动删除旧的。时间一长,LogFiles 目录能占几十个G。可以写个计划任务定期清理,比如保留最近30天。也可以用脚本按站点分别处理。手动删也行,但别在IIS运行的时候直接删整个文件夹,先停站点或者至少确认没有文件句柄占用。 日志格式方面,W3C 是默认也是推荐的选择。IIS 还支持 IIS 日志格式和 NCSA 格式,但那些用得少。W3C 格式灵活,字段可选,配合日志分析工具最方便。 最后说一句:日志路径这种事,每台服务器可能都不一样。接手一台新机器,别猜,直接去 IIS 管理器里看站点的日志设置,路径写得清清楚楚。 |