大型互联网应用记录用户的行为是一个问题,如何在不影响用户体验的情况下,异步的追踪用户的行为,apache 的开源项目clickstream 是个不错的选择,根据session 的 建立和销毁 来记录用户的行为日志。
Clickstream 概述
一个用来跟踪正在你的站点上访问的用户所到达位置细节的工具。它允许你跟踪访问你的站点的“点击流”或者“传输路径”。请访问JIRA的更新日志 来了解Clickstream最近的发展。
特性
当用户会话产生时,开始跟踪点击流。(通过一个监听器 )
跟踪用户产生的每次点击信息。(通过一个过滤器 )
当用户会话终止时,将完整的点击流记录到文件或者PrintStream中。
设法发现用户是不是机器人,并进行适当的过滤(目前可以检测252种机器人)
下面我使用 以前的一个SSH 整合的OA 系统来做为例子,给这个系统加上 用户行为记录(先记录到控制台上),稍后我们记录到远程的日志服务器上
步骤:
1. 在web.xml 中加上 clickstream 的filter ,配置 clickstream 拦截的行为 ,注意顺序,需要配置在web.xml的 靠前部分
Xml代码
clickstream
com.opensymphony.clickstream.ClickstreamFilter
clickstream
*.jsp
clickstream
*.html
clickstream
*.htm
clickstream
*.do
com.opensymphony.clickstream.ClickstreamListener
2. session 超时以后,需要调用哪个方法来完成行为日志得记录?也就是把某个sessionID 关联的行为记录下来,需要我们实现一个clickstream 的接口 ClickstreamLogger 接口,在 session 超时的时候,它会调用 log 方法,在log方法中我们可以通过 遍历 list 的方式 拿到 clickstream 帮我们记录的 某个具体的 sessionID 的行为,然后我们根据自己的业务要求来进行 持久化--- 交给日志服务器
Java代码
pa