一个简易Asp.net网站日志系统
来源:互联网 发布:上海嘉定大数据公司 编辑:程序博客网 时间:2024/06/11 11:40
前不久在网站上看到了网站日志访问记录组件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)
客户端主机的实例名
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)
当前请求访问时间
至于使用方式我想很简单,在系统根目录下创建一个WebSiteVisitConfig.xml 文件,内容如下:
<?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>
- 一个简易Asp.net网站日志系统
- asp.net 写系统日志
- asp.net网站执行周期性任务的简易解决方法
- asp.net网站利用VS进行简易打包
- 在ASP.Net中写系统日志
- 在ASP.Net中写系统日志
- asp.net 一个简易权限的小例子设计
- jquery+asp.net实现的一个简易web聊天工具
- asp.net 一个简易权限的小例子设计
- 写一个简易浏览器、ASP.NET核心知识(3)
- ASP.net--简易聊天室
- 网站访客 简易日志记录
- Asp.net MVC 3 开发一个简单的企业网站系统
- 如何发布一个ASP.NET网站
- 推荐一个ASP.NET的资源网站
- 如何发布一个ASP.NET网站
- 如何发布一个ASP.NET网站
- 如何发布一个ASP.NET网站
- ubuntu与usb转串口
- SQL盲注攻击的简单介绍
- _beginThreadex的用法&&以及其和CreateThread之间的区别
- Android Performance(4) Overdraw
- Linux设备模型之tty驱动架构分析
- 一个简易Asp.net网站日志系统
- imagick的安装
- 负数转化为二进制
- Oracle RAC负载均衡 客户端配置
- virtual Box 安装 ubutun Qt4.8.5 过程整理
- glRotate
- 虚函数的动态绑定
- 第二十九讲 ADO.NET(玩SQL语句) 实例补充之完善Excel删除数据及数据更新功能
- C语言通过指针调用函数