15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 微软IIS网站日志记录的相关技巧以及日志日期为什么相差8小时(更新第7次)

微软IIS网站日志记录的相关技巧以及日志日期为什么相差8小时(更新第7次)

时间:2023-05-06 22:33:02 | 来源:网站运营

时间:2023-05-06 22:33:02 来源:网站运营

微软IIS网站日志记录的相关技巧以及日志日期为什么相差8小时(更新第7次):虽然现在使用PHP Java 制作网站的占大多数,一般使用的是Apache 网站服务器,但使用Windows IIS做为网站服务器的还是有一定的人群。

最近需要监控网站的访问日志,所以研究了一下IIS的网站日志功能。记录一下备忘!

一、IIS提供了4种日志文件格式

在"格式"下的"日志文件"部分中,选择以下日志文件格式之一:

1) IIS日志文件格式

使用 Microsoft IIS 日志文件格式来记录有关站点的信息。这种格式由 HTTP.sys 进行处理,并且是固定的基于 ASCII 文本的格式,这意味着无法自定义记录的字段。字段由逗号分隔,记录的时间为本地时间。

2) NCSA日志文件格式

使用美国国家超级计算技术应用中心 (NCSA) 公用日志文件格式来记录有关站点的信息。这种格式由 HTTP.sys 进行处理,并且是固定的基于 ASCII 文本的格式,这意味着无法自定义记录的字段。字段由空格分隔,记录的时间为带有协调世界时 (UTC) 偏差的本地时间。

3) W3C日志文件格式

使用集中 W3C 日志文件格式来记录有关服务器上的所有站点的信息。这种格式由 HTTP.sys 进行处理,并且是可自定义的基于 ASCII 文本的格式,这意味着可以指定记录的字段。通过单击"日志"页上的"选择字段"来指定在"W3C 日志记录字段"对话框中记录的字段。字段由空格分隔,记录的时间采用协调世界时 (UTC) 格式。所以国内有时看到日志的时间与你本地的时间是相隔8小时,就是这个原因了。

4) 自定义日志文件格式

对自定义的日志记录模块使用自定义格式。如果选择此选项,则"日志"页将被禁用,因为无法在 IIS 管理器中配置自定义日志记录。

二、IIS日志文件存储位置

1) IIS 默认路径为 %SystemDrive%/inetpub/logs/LogFiles。
在"目录"下,可指定应存储日志文件的路径。

2)建议将日志文件存储在 systemroot 之外的目录中。

这样方便将来备份网站程序和数据时,避免将占和空间非常大的日志文件也包含进去。

三、日志滚动更新避免占用太大空间

1) 在"日志文件滚动更新"部分中,选择下列选项之一:

  - 计划:根据下列值之一来创建新日志文件:

  - 每小时:每小时创建一个新日志文件。

  - 每天:每天创建一个新日志文件。

  - 每周:每周创建一个新日志文件。

  - 每月:每月创建一个新日志文件。

  - 最大文件大小(字节):在文件达到某个大小(单位为字节)时创建新日志文件。最小文件大小为 1048576 字节。如果将此属性设置为小于 1048576 字节的值,则会隐式将默认值假定为 1048576 字节。

  - 不创建新的日志文件:只有一个日志文件,在记录信息的过程中,此文件将不断变大。

2)滚动更新使用本地服务器时间

选中"使用本地时间进行文件命名和滚动更新"以指定日志文件命名和滚动更新的时间都使用本地服务器时间。如果未选定此项,则使用协调世界时 (UTC)。

  注:无论此设置为何值,实际日志文件中的时间戳将对从"格式"列表中选择的日志格式使用此时间格式。例如,NCSA 和 W3C 日志文件格式对时间戳使用 UTC 时间格式。

四、选择要记录的 W3C 字段

如果希望控制日志文件中存储的数据量,或不记录无关的内容,则可以选择要记录的 W3C 字段。

  1. 打开 IIS 管理器,然后导航至要管理的级别。

  2. 在"功能视图"中,双击"日志"。

  3. 在"日志"页的"格式"下,单击"日志文件"部分中的"选择字段"。

  4. 在"W3C 日志记录字段"对话框中,选择下列一个或多个选项:

  - 日期(date):发出请求的日期。

  - 时间(time):发出请求的时间(协调世界时 (UTC))。

  - 客户端 IP 地址(c-ip):发出请求的客户端的 IP 地址。

  - 用户名(cs-username):访问服务器的已通过身份验证的用户的名称。匿名用户用连字符来表示。

  - 服务名(s-sitename):满足请求的站点实例编号。

  - 服务器名称(s-computername):生成日志文件项的服务器的名称。

  - 服务器 IP 地址(s-ip):生成日志文件项的服务器的 IP 地址。

  - 服务器端口(s-port):为服务配置的服务器端口号。

  - 方法(cs-method):请求的操作,例如 GET 方法。

  - URI 资源(cs-uri-stem):操作的统一资源标识符或目标。

  - URI 查询(cs-uri-query):客户端尝试执行的查询(如果有)。只有动态页面才需要统一资源标识符 (URI) 查询。

  - 协议状态(sc-status):HTTP 或 FTP 状态代码。

  - 协议子状态(sc-substatus):HTTP 或 FTP 子状态代码。

  - Win32 状态(sc-win32-status):Windows 状态代码。

  - 发送的字节数(sc-bytes):服务器发送的字节数。

  - 接收的字节数(cs-bytes):服务器接收的字节数。

  - 所用时间(time-taken):操作所花费的时间(毫秒)。

  - 协议版本(cs-version):客户端使用的协议版本(HTTP 或 FTP)。

  - 主机(cs-host):主机名称(如果有)。

  - 用户代理(cs(UserAgent)):客户端使用的浏览器类型。

  - Cookie (cs(Cookie)):发送或接收的 Cookie 内容(如果有)。

  - 引用站点(cs(Referer)):用户上次访问的站点。此站点提供与当前站点的链接。

五、网站返回的状态代码

1、返回代码:HTTP协议状态码的含义

   协议状态sc-status,是服务器日记扩展属性的一项

2、各状态码含义:

  "100" :Continue,客户必须继续发出请求。

  "101" :witching Protocols,客户要求服务器根据请求转换HTTP协议版本。

  "200" :OK,交易成功。

  "201" :Created,提示知道新文件的URL。

  "202" :Accepted,接受和处理、但处理未完成。

  "203" :Non-Authoritative Information,返回信息不确定或不完整。

  "204" :No Content,请求收到,但返回信息为空。

  "205" :Reset Content,服务器完成了请求,用户代理必须复位当前已经浏览过的文件。

  "206" :Partial Content,服务器已经完成了部分用户的GET请求。

  "300" :Multiple Choices,请求的资源可在多处得到。

  "301" :Moved Permanently,删除请求数据。

  "302" :Found,在其他地址发现了请求数据。

  "303" :See Other,建议客户访问其他URL或访问方式。

  "304" :Not Modified,客户端已经执行了GET,但文件未变化。

  "305" :Use Proxy,求的资源必须从服务器指定的地址得到。

  "306" :前一版本HTTP中使用的代码,现行版本中不再使用。

  "307" :Temporary Redirect,申明请求的资源临时性删除。

  "400" :Bad Request,错误请求,如语法错误。

  "401" :Unauthorized,请求授权失败。

  "402" :Payment Required,保留有效ChargeTo头响应。

  "403" :Forbidden,请求不答应(具体可查看博客《403 Forbidden错误的原因和解决方法》的相关介绍)。

  "404" :Not Found,没有发现文件、查询或URl(具体可查看博客《404 Not Found错误页面的解决方法和注意事项》的相关介绍)。

  "405" :Method Not Allowed,用户在Request-Line字段定义的方法不答应。

  "406" :Not Acceptable,根据用户发送的Accept拖,请求资源不可访问。

  "407" :Proxy Authentication Required,类似401,用户必须首先在代理服务器上得到授权。

  "408" :Request Time-out,客户端没有在用户指定的饿时间内完成请求。

  "409" :Conflict,对当前资源状态,请求不能完成。

  "410" :Gone,服务器上不再有此资源且无进一步的参考地址。

  "411" :Length Required,服务器拒绝用户定义的Content-Length属性请求。

  "412" :Precondition Failed,一个或多个请求头字段在当前请求中错误。

  "413" :Request Entity Too Large,请求的资源大于服务器答应的大小。

  "414" :Request-URI Too Large,请求的资源URL长于服务器答应的长度。

  "415" :Unsupported Media Type,请求资源不支持请求项目格式。

  "416" :Requested range not satisfiable,请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段。

  "417" :Expectation Failed,服务器不满足请求Expect头字段指定的期望值,假如是代理服务器。

  "500" :Internal Server Error,服务器产生内部错误。

  "501" :Not Implemented,服务器不支持请求的函数。

  "502" :Bad Gateway,服务器暂时不可用,有时是为了防止发生系统过载。

  "503" :Service Unavailable,服务器过载或暂停维修。

  "504" :Gateway Time-out,关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长。

  "505" :HTTP Version not supported,服务器不支持或拒绝支请求头中指定的HTTP版本。

六、注意事项

在 Windows Server 2012 R2 和更高版本中,可设置其他自定义字段,以从 HTTP 请求和响应头,以及从服务器变量中进行记录。

若要添加自定义字段,请选择“W3C 日志记录字段”对话框中的“添加字段”。如果选择了服务器级别的日志记录,然后禁用“添加字段”,则增强的日志记录功能仅适用于站点级别的日志记录。

请注意,如果你定义的自定义字段的总大小大于 64,000 个字节,则将记录的内容截断为 64,000 个字节。

日志使用的UTC时间又叫协调世界时,是以格林尼治时间为准,其它地方就要加上所在的时区,中国在东八区,所以要在UTC时间的基础上加八个小时。你看到的日志日期与你电脑日期不同,就是这个原因

七、将IIS日志内容写到数据库进行程序分析

如果您会软件开发的话,可以通过 VB C# Python 等对IIS日志进行编程开发,以下是c#通过 StreamReader 读取日志文件,并通过SqlConnection写到Sql Server数据库

以下内容摘自 zoukankan 的原创文章 :原文地址

读取iis日志到sql serverusing Fasterflect;using System;using System.Collections.Generic;using System.Data.SqlClient;using System.IO;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication2{ // 记录iis日志到sql server数据库中,并进行查询 class Program_IISLogFile { static void Main(string[] args) { Console.WriteLine("开始行:"); var startIndex = Console.ReadLine(); Console.WriteLine("结束行:"); var endIndex = Console.ReadLine(); Read("D:/job/test/tu_ex151203.log", int.Parse(startIndex), int.Parse(endIndex)); Console.WriteLine("over"); Console.ReadKey(); } // 数据库连接 const string connectionStr = "user id=sa;password=12345;data source=(local);initial catalog=test"; // 读取日志文件中的iis操作记录 public static void Read(string path, int startIndex, int endInex) { StreamReader sr = new StreamReader(path, Encoding.Default); String line; using (SqlConnection conn = new SqlConnection(connectionStr)) { using (SqlCommand cmd = new SqlCommand(connectionStr, conn)) { conn.Open(); int rows = 0; int statIndex = 0; string sql = string.Empty; while ((line = sr.ReadLine()) != null) { statIndex++; if (statIndex < 5 + startIndex) continue; if (endInex <= statIndex - 5) break; try { // Console.WriteLine(line.ToString()); string[] strs = line.ToString().Split(' '); string sql2 = ""; if (strs != null) { for (int i = 0; i < strs.Count(); i++) { sql2 += "'" + strs[i] + "'"; if ((i + 1) < strs.Count()) { sql2 += ","; } } } sql = string.Format(@"insert into [iislog] ([date], [time], [s-ip], [cs-method], [cs-uri-stem], [cs-uri-query], [s-port], [cs-username], [c-ip], [cs(User-Agent)], [cs(Referer)], [sc-status], [sc-substatus], [sc-win32-status], [time-taken]) values({0})", sql2); cmd.CommandText = sql; rows += cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException e) { //conn.Close(); Console.WriteLine("插入" + rows.ToString() + "条数据!" + e.Message + " sql:" + sql); //continue; } // Console.WriteLine("插入" + rows.ToString() + "条数据!"); } } } } #region 数据库相关 /* 数据库表创建语句 CREATE TABLE [dbo].[iislog]( [date] [varchar](50) NULL, [time] [varchar](50) NULL, [s-ip] [varchar](50) NULL, [cs-method] [varchar](5000) NULL, [cs-uri-stem] [varchar](5000) NULL, [cs-uri-query] [varchar](5000) NULL, [s-port] [varchar](5000) NULL, [cs-username] [varchar](5000) NULL, [c-ip] [varchar](5000) NULL, [cs(User-Agent)] [varchar](5000) NULL, [cs(Referer)] [varchar](5000) NULL, [sc-status] [varchar](5000) NULL, [sc-substatus] [varchar](5000) NULL, [sc-win32-status] [varchar](5000) NULL, [time-taken] [varchar](5000) NULL) */ /* 查询请求次数较多的url select [cs-uri-stem] + '?' + [cs-uri-query] as '链接地址', [sc-status] '状态码', c '请求次数' from (select [cs-uri-stem], [cs-uri-query], [sc-status], count(1) c from iislog where PATINDEX('%.aspx%', [cs-uri-stem]) <> 0 group by [cs-uri-stem], [cs-uri-query], [sc-status]) tbl order by c desc, '链接地址' desc */ #endregion }}

八、通过日志分析网站

1、使用IIS的LOG日志中的cs-uri-stem字段来分析网站中哪一个页面被访问或被点击得最多

2、分析客户端有哪些IP 访问最多,可使用 c-ip 字段

3、分析网站出错最多的页面,可针对sc-status 字段

4、分析网站页面的运行时间,可针对time-tak 字段

如果觉得不错,就请帮忙点个赞 收藏 及关注 我 @小辣椒高效Office


关键词:日志,日期,更新,小时,记录,技巧,相关

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭