日期:2014-05-16  浏览次数:20930 次

一个简易Asp.net网站日志系统

前不久在网站上看到了网站日志访问记录组件UserVisitLogsHelp开源了! 这篇博客感觉还不错,就把源码download了下来,学习一下,发现里面的代码书写和设计并不是很好,于是自己改了改。自己在测试中也发现了一点小问题,同时也记录出来。

该组件实现原理很简单:主要利用IHttpModule接口并在Web.config中的HttpModule节点添加此组件的配置,考虑到性能和可移植性,数据库采用开源Sqlite,方便维护和数据采集。这里数据采集需要一个相应的配置类,结构如下:

FileSource和DateSource两个属性共同决定sqllite文件名,DateSource 取值是day,month,year,表示每天、月、年一个数据库文件。比如我这里是month,生成的文件如下:

ExcludeUrlRegex属性主要是设置需要排除url对应的正则表达式。很多时候我们并不需要记录css、js、图片等静态资源的访问日志。

在测试的时候 建议大家不要设置Password属性,不然在用sqllite管理工具打开数据库文件时出现错误信息。如我这里用SQLlite Administrator错误信息如下:

整个web application必须部署到正式的IIS环境,千万不要使用IIS Express,如果你用IIS Express会出现如下错误

记录的 Sqlite日志数据库 结构如下:

编号

字段名称

字段类型

备注

1

Id

integer

自增序号(PK,Not Null)

2

UserHostAddress

varchar(20)

远程客户端的IP主机地址

3

UserHostName

varchar(20)

远程客户端的DNS名称

4

UrlAbsoluteUri

varchar(1600)

当前请求的绝对URI

5

PhysicalPath

varchar(500)

当前请求的URL相对应的物理文件路径

6

UserAgent

varchar(1000)

客户端浏览器的原始用户代理信息

7

HttpMethod

varchar(4)

客户端使用的HTTP数据传输方法

8

UserLanguages

varchar(20)

客户端语言首选项的排序字符

9

UrlHost

varchar(100)

客户端主机的实例名