之前用ASP对IIS的日志文件进行解毒,目的也是用AspJpeg画个图,虽然实现了但是速度相当慢,如果进行周汇总、月汇总、季度汇总……那要你非常有耐心了,不是一般慢,是相当的慢啊。
        一日对IIS的日志存储中ODBC部分有了点儿兴趣,从网上查了查资料,这么做的还真不少。
         首先在SQL Server中建一个数据库,我的叫做 IIS_Log ,用户权限啥的都设好,我的用户也是IIS_Log,打开这个数据库,在里面建个表:
CREATE TABLE [dbo].[www1] (
 [Logid] [int] IDENTITY (1, 1) NOT NULL ,
 [ClientHost] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [username] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [LogTime] [datetime] NULL ,
 [service] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [machine] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [serverip] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [processingtime] [int] NULL ,
 [bytesrecvd] [int] NULL ,
 [bytessent] [int] NULL ,
 [servicestatus] [int] NULL ,
 [win32status] [int] NULL ,
 [operation] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [target] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [parameters] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
因为我的机器上有很多Web应用,www1是其中一个站点的名称,就这样子命名了。其它的站点也可以一一建立对应的表。
数据准备工作完毕,下一步配置ODBC。
打开ODBC,系统DSN,添加,最下面的那个SQLServer,名称就用IIS_Log了,服务器选好,第二步选择用SQL验证,输入用户名密码,然后连接,如果确认上面的数据库是我们的新建的IIS_Log,如果不是的话需要更改默认数据库。然后一直下一步,直到完成。
 
下面开始配置IIS(只有服务器版的IIS支持ODBC的日志记录功能)
打开IIS管理器,展看你的站点列表,右键点击网站,属性。
默认的是日志是W3C的,点击改成ODBC,点击属性
属性里面数据源名称就是上面在创建ODBC数据源时输入的名字,表就是刚刚建立的表www1,用户名吗是上面创建的iis_log的用户名和密码。
一切配置OK(别忘了点应用或者确定)。
现在就可以把访问记录放入数据库了,至于下面要做什么那就要发挥你的想象力了。数据摆在面前,分析、汇总都交给ASP吧。
 
说明一点,建议给IIS_Log这个数据库多加几个数据文件,如果网站访问量比较大的话,数据增长很快的。另外在设置数据文件自动增长的时候使用定值增长,还要设置数据文件最大值。
还有就是,如果想做访客地址记录的话,对发布网站的设备,或是路由器或是防火墙也有要求。ISA的Web发布在这里就是行不通的,他把所有的访问源地址都给改了,所以在日志中看到的就都是ISA的内部地址,没有任何意义。