访问日志(共4篇)
访问日志 篇1
在开发企业Asp.netWeb应用时经常需要以日志的方式记录用户的访问信息, 以便了解访问本站的用户兴趣点在那里, 从而改进自己的站点, 提高用户的访问量。通常的做法编写一个记录日志的类, 然后在每个页面中调用该类的以记录用户的访问。这样的方法在站点的页面较少的时候可行, 但是当项目比较大时, 这种方法就显得比较繁琐。另外一种情形是原来的系统并没有日志功能, 如果用上面的方法来添加日志功能, 则必须修改整个网站的每个页面, 工作量很大。
本文提出了一种基于HttpModule创建用户页面访问日志的方法, 它不需修改原站点工作正常的页面, 就可实现记录本站点用户访问日志的功能, 这比原来的方法简便不少, 且维护也很方便。
1 HttpModule简介
要了解HttpModule的工作原理, 首先得了解一下ASP.NET请求的处理过程。
ASP.NET请求处理过程是基于管道模型的, 在模型中ASP.NET把http请求传递给管道中的所有Module。每个Module都接收http请求并有完全控制权限。Module可以用任何自认为适合的方式来处理请求。一旦请求经过了所有HttpModule, 就最终被H TTP处理程序处理。HTTP处理程序对请求进行一些处理, 并且结果将再次经过管道中的HttpModule。如图1所示。
HttpModule是实现了System.Web.IHttpM odule接口的.NET组件。这些组件通过在某些事件中注册自身, 把自己插入ASP.NET请求处理管道。当这些事件发生的时候, ASP.NE T调用对请求有关的HttpModule, 这样该Mod ule就能处理请求了。
本方法的工作原理就是制作一个负责日志记录的HttpModule, 并在合适的事件中注册, 当用户的请求到来时, 记录相应的数据以完成日志记录。
2 创建页面访问日志的IHttpModule
HttpModule要实现IHttpModule接口的下面一些方法 (如表1) 。
在此, 我们首先在站点的App_Code文件夹中创建一个实现了上述方法的类MyH ttpModel。其关键代码如下:
为了记录用户的访问数据, 本文设计了一个名为UserLog (id, usersession, IP, dat etime, url) 的简单表。其中id是编号, users ession记录注册用户标识, IP表示访问者的IP地址, datetime表示访问时间, 它由SqlSer ver在插入数据时自动记录, url表示访问者请求的页面。
这个类的主要内容是一个用来记录用户访问数据的方法onRequest, 另外就是把此方法注册到AcquireRequestState事件中。
接下来要在web.config注册这个HttpM odul.
在web.config中的
这样注册就完成了。
接下来就可在几个不同IP的计算机上测试一下, 看看自定义HttpModule是否工作正常。
另外要作的一件事就是作一个简单的页面用以显示所有的日志记录 (如图2) 。
3 结语
通过以上制作过程可知, 本文所提出的利用HttpModule创建用户页面访问日志方法实现简单, 而且不需对原页面作任何的修改。它可记录任何用户对页面的访问, 方便管理员考查用户对自己站点中那部分最感兴趣, 从而改进自己的站点。它的缺点就是只能针对于aspx的页面, 如要记录对普通的html页面的访问则必需另作设置。
摘要:本文给出了一种基于HttpModule的记录用户访问日志的方法, 该方法实施简便, 且不需要对站点中的页面作任何修改。
关键词:HttpModule,访问日志
参考文献
[1] (意) Dino Esposito[著], 罗兵, 顾雁宏, 詹文军[译].精通ASP.NET程序设计[M].清华大学出版社, 2006.7.
[2]skyaspnet.ASP.NET HttpModule原理.[EB/OL].http://blog.csdn.net/skyasp net/archive/2009/02/05/3865126.asp x.
[3]Microsoft.MSDN Library for Visual S tudio[M/CD], 2008, 12.
Web日志频繁访问路径挖掘算法 篇2
从海量日志中挖掘用户浏览网页的访问路径, 常见的方法有参考长度法等, 这些算法认为用户的浏览频度就反映了用户的访问兴趣。进一步的改进包括基于支持度-偏爱度的频繁路径挖掘算法, 但挖掘出的频繁模式不一定是用户浏览路径的子路径, 此外有些方法不能产生Web事物中连续的频繁访问路径。有些方法利用访问路径树挖掘频繁扩展子路径, 只需扫描一次数据库, 但存在不能挖掘出连续可重复的频繁访问路径的缺陷。
综述所述, 面对海量的Web日志, 如何快速准确地挖掘出日志中隐含的频繁访问路径是各类算法追求的目标。本文在研究访问路径树性质的基础上, 给出了高效精确的算法。
2、相关概念
则称路径p为频繁访问路径。其中是预先定义好的最小支持度。
定义2:若路径p=
3、算法描述
3.1 构建访问路径树
Web日志事务数据库如表1所示, 对该数据库的记录逐条处理, 生成访问路径树, 如图1所示。
Web访问路径树除root节点外, 其余各节点均代表页面及该页面出现的次数, 分别用page和num表示。由Web访问事务数据库构建Web访问路径树的算法如下:
算法1:构建Web访问路径树
Web访问路径树有个性质, 既各条从树根到叶子节点的路径上各点的num值是递减的, 这是因为合成Web访问路径树的时候前缀相同的记录共享这些前缀节点。
3.2 生成最长前缀频繁子路径树
研究图1可以发现, 若将所有的最长频繁子路径合成为一个树, 则该树是图1的子图, 并且该图是原图的上半部分。例如, 若|D|*N=3, 那么图1所示的Web访问路径树的所有最长频繁子路径合成的图如图2所示, 不妨将该图称谓最长前缀频繁子路径树。先序遍历Web访问路径树, 删除num值少于|D|*N的节点所表示的子树, 即可生成最长前缀频繁子路径树, 如算法2所示。
算法2:构建最长前缀频繁子路径树
输入:Web访问路径树TP
输出:最长频繁子路径树fre TP
3.3 产生频繁访问路径集
先考虑单支最长频繁前缀子路径产生频繁访问路径集的过程, 例如图3中的路径P2P1P3P1, 频繁访问路径集合frequent PS初始值为空, 当前访问节点为P2, frequent PS1和frequent PS2为中间结果, 初始值均为空, frequent PS1i=frequent PS2i-1∪frequent PS3i-1表示第i步的frequent PS1等于第i-1步的frequent PS2并上第i-1步的frequent PS3。当某步骤中frequent PS2为空时程序结束。产生频繁访问路径集如算法3所示。
算法3:产生频繁访问路径集
输入:最长前缀频繁子路径树fre TP
输出:频繁访问路径集frequent PS
访问日志 篇3
给出了一种新的从Web日志中挖掘访问模式的算法, 与通常使用的基于关联规则挖掘的序列模式挖掘技术相比, 它的优点是挖掘过程中不会产生庞大数量的候选模式, 而是直接挖掘出所有的Web访问模式, 这种算法命名为CSB (conditional sequence base mining algo-rithm) 。
序列模式挖掘的相关概念:
项目集 (Itemset) :各种项目组成的集合。序列 (Sequence) :不同的项目集的有序排列, 序列s可以表示为S=
2 一种新的挖掘访问模式
本文提出了一种有效的序列模式挖掘改进算法:CSB (Conditional Sequence Base mining algorithm) 基于条件序列的挖掘算法。CSB算法描述主要思想及执行过程:通过预处理从Web存取序列数据库中得到初始化条件序列InitCSB, 然后为基于条件的序列构造频繁事件队列及建立头表, 对基于条件的序列进行单独序列测试, 构造基于条件的子序列, 递归的进行挖掘基于条件的子序列, 最终得到SAP (the set of sqquential access patterns) 序列存取模式集合。
2.1 预处理阶段
第一步是基于Web存取序列数据库构造初始化条件序列。初始化条件序列的定义:a.初始化条件序列命名为Init-CSB, 是原始数据库的所有web存取序列的集合。b.基于条件的序列由一个事件ei和前缀序列Sprefix表示为
CSB (Sc) , Sc=Sprefix+ei。
2.2 为条件序列构造事件队列
为四步:
2.2.1 从CSB (Sc) 中找到条件频繁事件
2.2.2 创建头表Head Table。
2.2.3 构造事件队列
2.2.4 删除非频繁事件
定义3:所有条件频繁事件的支持度不小于最小支持度。
为了在CSB (Sc) 中找到条件频繁事件, 需要标识那些支持度不小于最小支持度的事件。
算法:ConstructEQ
输入:
1:Min Sup--最小支持度。
2:CSB (Sc) --基于条件的序列Sc。
3:E={ei|1≤i≤n}--CSB (Sc) 序列中的所有存取事件。
输出:
1:CSB (Sc) 的头表Head Table和事件队列eventqueues。
方法:
1:创建CSB (Sc) 的一个空头表HT。
2:对每一个属于E的事件ei, 如果ei的支持度大于MinSup, 将ei插入到HT。
3:对属于CSB (Sc) 的每一个条件序列:
a:对每一个在HT中的ei, 将这个序列中包含第一个项目标签的ei插入到ei队列。
b:删除这个序列中所有项目中的不在HT的事件。
4:返回CSB (Sc) 的头表HT和事件队列event queues。
Header Table
事例:如果Init-CSB={abdac, eaebcac, babfae, afbacfc}, 然后获得在最小支持度Min Sup=75%, Init-CSB=4的条件下, 一个事件要成为条件频繁事件它的计数最少为3。因此, 条件频繁事件为 (a:4) , (b:4) , (C:3) 。每一个存取事件表示为 (事件:计数) 。构造的事件队列a, b, c为如上图显示的从头表开始的箭头线。每个序列中的非频繁事件d, e, f都被删除。对于任何基于条件序列的子事件, 它的头表和事件队列都能使用Construct EQ算法构造出来。
2.3 构造基于条件的子序列
定义:CSB (Sprefix+ei) 被称为基于CSB (Sprefix) 条件子序列, 如果ei不为空。在CSB (Sc) 头表中的每一个存取事件ei, 构造基于CSB (Sc) 的CSB (Sc+ei) 的Construct Sub CSB算法。
算法:Construct Sub CSB
输入:
1:CSB (Sc) —基于Sc的条件序列
2:ei—CSB (Sc) 的头表中的一个给定事件
输出:
1:CSB (Sc+ei) —基于CSB (Sc) 的条件子序列。
方法:
1:初始化CSB (Sc+ei) 为空。
2:对每一个在CSB (Sc) 中的ei队列的项目, 将它的后缀序列插入到CSB (Sc+ei) 。
3:返回CSB (Sc+ei) 。
事例:在Fig.2中显示的Init-CSB, 我们获得了a的所有后缀序列CSB (a) , 所有基于Init-CSB的子条件序列的其中一个。结果显示在Fig.2。CSB (a) 包括{bac, bcac, ba, bacc}。
Header Table
2.4 基于条件序列的单个序列测试
如果CSB (Sc) 中的所有队列能够连接到一个单独的序列, 那么CSB (Sc) 挖掘算法会停止。这个单独的序列被用做最终的序列模式的一部分。否则, 将为CSB (Sc) 构造Sub-CSBs并且递归的进行挖掘。测试CSB (Sc) 中的所有序列是否能够连接成一个单独的序列的Test CSB算法:
算法:Test CSB
输入:1:CSB (Sc) —基于条件的序列Sc
2:HT—CSB (Sc) 的头表
输出:
1:测试结果—成功或失败标志。
2:Single Seq—CSB (Sc) 的单独的队列。
方法:
1:初始化Single Seq为空。
2:如果CSB (Sc) 为空, 返回成功标志和Single Seq为空。
3:对属于CSB (Sc) 的长度从1到最大值的所有序列:
a:如果属于CSB (Sc) 的每一个序列的所有项目都是相同的事件e。如果这些项目的总数量大于最小支持度乘于初始化序列的数量, 按照统计的数量创建e的新项目并插入到Single Seq。
b:否则, 返回失败标志, Sing Seq为空。
4:返回成功标志和单独的队列。
事例:在CSB (a) ={bac, bcac, ba, bacc}中, 每一个序列的第一个项目都能连接到一个项目 (b:4) , 但第二个项目不行。连接步停止并返回失败标志。在CSB (aa) ={c, c, cc}, 这个序列能连接到一个单独的序列c:3, 返回成功标志。
2.5 完整的CSB挖掘算法
一个Web存取序列数据库挖掘到序列存取模式的完整的CSB-mine
算法:
算法:CSB-mine
输入:
1:Min Sup—最小支持度。
2:WASDB={si|1≤i≤n}web存取序列数据库, si是一个web存取序列。
3:E={ei|1≤i≤n}—WASDB中的所有存取事件。
输出:
1:SAP-序列存取模式集合the set of sqquential access patterns。
方法:
1:初始化SAP为空。
2:通过预处理构造Init-CSB (CSB (Sc) , Sc为空) 。
3:使用Construct EQ去构造CSB (Sc) 的事件队列。
4:使用Test CSB算法测试CSB (Sc) 的单独序列。
a:如果测试成功, 将规则的项目连接到频繁序列FS=Sc+Single Seq插入到SAP。
b:否则, 对在CSB (Sc) 头表中的每一个事件ej, 使用Construct Sub CSB算法去构造CSB (Sc+ej) 。使Sc=Sc+ej返回到步骤3进行递归的挖掘CSB (Sc) 。
5:返回SAP。
事例:支持度为Min Sup=75%的完整的序列存取模式在Table1。
3 结语
我们提出的CSB挖掘算法将会应用到校园网web推荐系统, 为用户提供个性化服务, 并且让用户存取相关联的页面更有效和快捷。web推荐系统的目标是确定哪个页面会是当前用户下一步最有可能访问的。
参考文献
[1]Jiawei Han, Micheline Kamber著范明孟小峰译数据挖掘:概念与技术[M].北京:机械工业出版社, 2007.
[2]张娥等.Web使用模式研究中的数据挖掘[J].计算机应用研究, 2001 (3) .
访问日志 篇4
一、功能模块介绍
登录模块:包含用户登录页面login.asp。
网站访问记录存储模块:log.asp页面, 实现对网站访问日志记录的存储操作。
管理模块:show.asp页面,用于查看网站的访问日志记录。
二、功能设计与实现
(1) 、登录页面设计 (图1) 。
使用表单制作用户登录页面,当点击“登陆”按钮后把用户输入的用户名和密码信息提交到check.asp页面,进行用户合法性检测。登录页面部分源代码如下:
(2) 、网站访问记录存储模块
文本文件存储方式
通过对文本文件的写操作将用户的访问记录存储到文本文件中,该页主要源代码如下:
数据库存储方式
通过对数据库的写操作将用户的访问记录存储数据库中,该页面主要源代码如下:
(3) 、查看用户访问日志页面
在该页面可以查看网站的历史访问日志记录。见图2
文本文件存储方式下的数据显示
通过对文本文件的读操作可以把存储的网站访问日志信息读取并显示在相应的区域内,该页面主要源代码如下:
数据库存储方式下的数据显示
通过对数据库中存储用户网站访问日志的数据表的访问,将网站访问日志信息读取并显示在相应的区域内,该页面主要源代码如下:
三、两种实现方式的比较
(1)、从两种方式的实现方式上看。文本方式是通过对文本文件的读写操作来实现数据的存储与使用,读写的操作就是对文本内字符的操作,一切的算法控制关键也就转换为文本字符的控制,算法的灵活性很大。但数据库方式则是通过对数据库中相应数据表的读写操作来实现数据的存储与使用,现在不管是何种编程环境与语言都提供了比较规范的数据库编程接口,我们可以通过标准的SQL语言方便的实现数据的相关操作,算法上比较简单。
(2)、从存储数据文件本身性质来看。文本方式的操作数据是存储在一个文本文档当中,占用存储空间小,通过操作系统本身就可以打开文本文件,数据的查看与访问非常简单,但文本是一个孤立的文档,文档与文档之间的数据不可能建立起任何的联系。而数据库方式的操作数据是存储在数据表中,数据表必须通过相应的数据库软件才能够访问数据表,表与表之间可以建立相应的联系,使数据之间相互关联。