IIS日志(log)详解

现在是网络时代了,不少朋友都拥有了自己的个人网站啊,个人主页什么的,很多人问我如何统计个人网站的流量,其实这个问题很简单的。使用IIS服务器的网站,如果启动IIS的LOG日志记录,每一个网站每一天都会有一个日志生成,这个日志详细地记录了所有访问您的网站的记录,本人是在时代互联 http://now.net.cn 购买的空间,他们空间已经自带了IIS的日志分析系统,查询很方便的,有需要的朋友可以去他们的网站了解一下。 

以下是其中一段: 
ex050104.log 
#Software: Microsoft Internet Information Services 6.0 
#Version: 1.0 
#Date: 2005-01-03 16:00:00 
#Fields: date time cs-method cs-uri-stem cs-uri-query c-ip cs(Referer) sc-status sc-bytes cs-bytes time-taken 

2005-01-01 16:02:06 POST /searchout.asp - 70.25.29.53 http://www.test.com/ 200 18058 653 17312 
2005-01-01 16:02:21 GET /images/cd-01_07.gif - 70.25.29.53 http://www.test.com/Enterprise/detail.asp?id=1612186 304 214 464 750 
2005-01-01 16:02:22 GET /Enterprise/detail.asp id=1612186 70.25.29.53 http://www.test.com/searchout.asp 200 17735 369 4656 

我们可以看到,在LOG日志里面的最顶头有一些相关说明,记录开始时间,以及将要记录哪些信息。 
比如#Fields: date time cs-method cs-uri-stem cs-uri-query c-ip cs(Referer) sc-status sc-bytes cs-bytes time-taken 
其中 
date表示记录访问日期; 
time访问时间; 
cs-method表示访问方法,常见的有两种,一是GET,就是平常我们打开一个URL访问的动作,二是POST,提交表单时的动作; 
cs-uri-stem就是访问哪一个文件; 
cs-uri-query是指访问地址的附带参数,如asp文件?后面的字符串id=12等等,如果没有参数则用-表示; 
c-ip访问者IP; 
cs(Referer)访问来源; 
sc-status状态,200表示成功,403表示没有权限,404表示打不到该页面,500表示程序有错; 
sc-bytes服务端传送到客户端的字节大小; 
cs-bytes客户端传送到服务端的字节大小; 
time-taken处理时间。 

利用上面IIS的LOG日志,可以做如下用途: 

一、网站访问统计: 

通过对上面两行的记录,我们可以得知,每当有一个访问,都会相应的有一个记录,为新的一行,统计这些记录,就可以得到一个准确的统计数字了。 
需要注意的地方:LOG日志会把每一次浏览都详细记录,包括如index.asp文件里面的logo.gif等等图片都记录为新的一行。也就是说如果一个页面里面如果使用了10张图片,那同时也会有10个记录产生。如果注意到了这一点,我们就可以做一个更加准确的统计就是过滤文件后缀名了。 
使用程序来分析这些统计会快速准确的多,一个程序的例子如下(C#): 
int count=0; 
public void logparse(){ 
StreamReader sr = new SteamReader("ex050104.log"); 
string line=""; 

while((line=sr.ReadLine())!=null){ 
DoParse(line); 


private void DoParse(string line){ 
this.count++; 

上面的就是一个最简单的统计日志的行数的程序。 

如果要做详细的分析,如:要统计下载量,也就是sc-bytes的总值,就可以做如下改动: 
int downbytes=0; 
private void DoParse(string line){ 
string[] linearr = line.Split(' ');//将一行记录以空格分割开来. 
int bytes = Convert.ToInt32(linearr[8]); //前提是知道一行记录里面字段的位置 
downbytes += bytes; 
this.count++; 

注意日志记录的传送的是以字节记录的,而不是K。 
同样的道理可以分析页面运行的总时间,等等。 

分析点击统计量与来访IP数的区别:一个来访者,可能会在网站上访问多个页面,那就会有多个记录是同一个IP的。那统计那些不重复的IP访问记录,就是来访IP数了。 
怎样不统计那些重复的IP呢?下面只是其中一种方案: 
private void IPParse(string ip){ 
Hashtable iphash = new Hashtable();//使用Hashtable来保存 
if(iphash.ContainsKey(ip)){ //如果已经存在,就加1 
iphash[ip]=(int)iphash[ip]+1; 
}else{ 
iphash.Add(ip,0); //如果没有则新添加 


这样就可以不统计重复的IP,也可以统计同一个IP访问的次数。 
统计访问来源可以使用同上的方法,就可以得到不重复的来源统计了。 


二、分析网站的结构: 

1、首先站长可能比较关心的一点是,到底我的网站里哪一个页面被人点击得最多,同样可以使用IIS的LOG日志来分析,主要分析cs-uri-stem这一字段。 
和分析重复的IP和来源一样,可以统计某一页面的点击量。 

2、分析网站页面出错的页面,主要针对sc-status 
分析主要有哪些页面出错,对网站进一步了解。 

3、分析网站页面的运行时间,主要针对time-taken,可以确定自己的哪一个程序写得不好,导致访问时间过长。 

通过IIS的日志文件可以得到一些我们网站制作者想要的信息,可以进一步检查自己的网站的不足。 
网站统计说到底也就是这么简单,无非就是对日志文件每一行进行简单的统计而已。分析日志文件,您自己也可以做网站统计分析了。有兴趣建立网站的朋友可以登陆时代互联的网站(now.net.cn),他们的空间是提供试用的,速度,功能、稳定上都可以说是一流的,特别是他们前段时间推出的时代互联 Global CDN全球网络镜像及加速引擎,解决了影响互联网传输性能的“第一公里”和“网间互联瓶颈”等各个环节的问题,从而实现跨地区、跨运营商网络加速服务。现购他们的空间都可以送Global CDN网络加速器,具体的可以上他们的网站了解: http://www.jiqiao8.net

原文地址:https://www.cnblogs.com/Leo_wl/p/2228045.html