一个简易Asp.net网站日志系统
2014-04-12 18:18
375 查看
前不久在网站上看到了网站日志访问记录组件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日志数据库 结构如下:
至于使用方式我想很简单,在系统根目录下创建一个WebSiteVisitConfig.xml 文件,内容如下:
同时修改web.config文件如下:
源码下载地址:http://download.csdn.net/detail/dz45693/7183419
该组件实现原理很简单:主要利用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) | 客户端主机的实例名 |
10 | UrlPort | varchar(10) | 当前URI的端口号 |
11 | TotalBytes | integer | 当前输入流中的字节数 |
12 | ContentLength | integer | 客户端发送的内容长度(以字节计) |
13 | IsLocal | varchar(5) | 当前请求是否来自本地计算机 |
14 | BrowserType | varchar(30) | 浏览器的名称和主(整数)版本号 |
15 | BrowserVersion | varchar(20) | 浏览器的完整版本号(包括整数和小数) |
16 | BrowserPlatform | varchar(20) | 客户端使用的操作系统平台名称 |
17 | BrowserBeta | varchar(5) | 浏览器是否为测试版 |
18 | BrowserActiveXControls | varchar(5) | 浏览器是否支持ActiveX控件 |
19 | BrowserCookies | varchar(5) | 浏览器是否支持Cookie |
20 | BrowserCrawler | varchar(5) | 浏览器是否为Web爬行遍历搜索引擎 |
21 | BrowserJavaScript | varchar(5) | 浏览器支持的EcmaScript主版本号 |
22 | BrowserSupportsXmlHttp | varchar(5) | 浏览器是否支持通过HTTP接收XML |
23 | BrowserInputType | varchar(30) | 浏览器支持的输入类型 |
24 | BrowserScreenPixelsWidth | integer | 浏览器显示的近似宽度(单位像素) |
25 | BrowserScreenPixelsHeight | integer | 浏览器显示的近似高度(单位像素) |
26 | UrlReferrerAbsoluteUri | varchar(1600) | 客户端上次请求(该请求链接当前的URL)的绝对URI |
27 | UrlReferrerAbsoluteUriDecode | varchar(1600) | 对UrlReferrerAbsoluteUri字段进行zh-cn或utf-9解码 |
28 | UrlReferrerHostName | varchar(100) | 客户端上次请求(该请求链接当前的URL)的DNS名称 |
29 | CanCombineFormsInDeck | varchar(5) | 浏览器是否支持包括多个窗口的卡片组 |
30 | IsMobileDevice | varchar(5) | 浏览器是否为已识别的移动设备 |
31 | MobileDeviceManufacturer | varchar(30) | 已知移动设备制造商的名称 |
32 | MobileDeviceModel | varchar(30) | 已知移动设备的型号名 |
33 | NumberOfSoftkeys | integer | 移动设备上软键的数目 |
34 | ContentEncoding | varchar(10) | 内容字符的编码 |
35 | ScreenBitDepth | integer | 浏览器显示的近似深度(单位像素) |
36 | Website | varchar(100) | 访问Web站点 |
37 | WebCookies | varchar(80) | 记录当前访客的惟一Cookies值 |
38 | VisitTime | varchar(20) | 当前请求访问时间 |
<?xml version="1.0" encoding="utf-8" ?> <WebSiteVisitLog> <WebSiteVisit> <!--FileSource Automatic Generation of Database File year:one year month:every month day:every day None:Does not generate --> <SQLiteConnectings FileSource="~/App_Data/HomeWeb" Password="" DateSource="month" WebSite="" ExcludeUrlRegex=".*\.(js|css|png)" DecodeUrl="" TextDecoding="utf-8" ExcludeUserAgentRegex="" WebCookiesName="" WebCookiesExpires="3650"/> </WebSiteVisit> </WebSiteVisitLog>
同时修改web.config文件如下:
<modules runAllManagedModulesForAllRequests="true"> <add name="WebSiteVisit" type="WebSiteVisitLog.WebSiteVisitHttpModule,WebSiteVisitLog"/> </modules>
源码下载地址:http://download.csdn.net/detail/dz45693/7183419
相关文章推荐
- 一个简易Asp.net网站日志系统
- Asp.net MVC 3 开发一个简单的企业网站系统
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
- Asp.net MVC 3 开发一个简单的企业网站系统
- Asp.net MVC 3 开发一个简单的企业网站系统
- 使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移
- ASP.NET一个简易的WebServer,用控制台程序模拟IIS 托起web服务
- VB.Net + asp.net的一个web系统,使用SQL2000数据库 现在运行时偶尔会出现一个奇怪现象,一个用户登录时,登录后的界面竟然是另一个用户
- Asp.net MVC 3 开发企业网站系统仿照博客园部分功能--总体设计
- 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
- [分享]ASP.net一个空间多个网站的设置
- 推荐一个ASP.NET的资源网站
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作
- Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法
- 打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示
- ASP.NET 2.0 网站编译成一个DLL
- 做完一个小网站的一点经验总结(1): asp.net 与access数据库结合
- Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法
- 如何发布一个ASP.NET网站