数据收集---web访问日志收集与统计
来源:互联网 发布:农村淘宝服务站的补贴 编辑:程序博客网 时间:2024/05/16 12:49
本文转载自 http://blog.csdn.net/hugolyl/article/details/50404478
- 话说web访问日志,很多同学对百度统计,谷歌统计(google analytics)很熟悉,就是加点js代码埋点,然后很方便可以从百度等获得网站的访问情况统计。这种方式的确是很方便,自己可以不用管日志的数据,对系统的影响也很小,还可以增加网站排名(?),哈哈,总之,是很方便。如果想了解其工作原理?如果想自己来收集保存这个数据呢?我们一起来看看这个过程吧,做一个自己的统计工具。下面我们来说说整个步骤:
- 我有一个网站页面test.html,添加埋点。
<html lang="en"> <head> <title>Document</title> </head> <body> <p>这里有很多东西,很多好看的yellow的图片</p> <!---下面的js就是埋点了,有木有似曾相识的赶脚!---> <script type="text/javascript"> var _maq = _maq || []; _maq.push(['_setAccount', 'testname']); (function() { var ma = document.createElement('script'); ma.type = 'text/javascript'; ma.async = true; ma.src = ('https:' == document.location.protocol ? 'https://localhost:8080' : 'http://localhost:8080') + '/ma.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ma, s); })(); </script> </body></html>
- 这个页面一被浏览器运行,很明显浏览器会触发js脚本,去异步加载访问http://localhost:8080/ma.js。这个就是我们的统计脚本,这个是关键核心哦!
这个脚本运行在tomcat中,我测试用的。ma.js样子是这样的:
(function () { var params = {}; //Document对象数据 if(document) { params.domain = document.domain || ''; params.url = document.URL || ''; params.title = document.title || ''; params.referrer = document.referrer || ''; } //Window对象数据 if(window && window.screen) { params.sh = window.screen.height || 0; params.sw = window.screen.width || 0; params.cd = window.screen.colorDepth || 0; } //navigator对象数据 if(navigator) { params.lang = navigator.language || ''; params.apn = navigator.appName || ''; params.apv = navigator.appVersion || ''; params.apc = navigator.appCodeName || ''; params.ua = navigator.userAgent || ''; } //解析_maq配置 if(_maq) { for(var i in _maq) { switch(_maq[i][0]) { case '_setAccount': params.account = _maq[i][1]; break; default: break; } } } //拼接参数串 var args = ''; for(var i in params) { if(args != '') { args += '&'; } args += i + '=' + encodeURIComponent(params[i]); } //通过Image对象请求后端脚本 var img = new Image(1, 1); img.src = 'http://localhost:8080/1.gif?' + args;})();
这里面也很好理解,通过js获得大堆数据,包括自定义的参数,然后拼接乘参数串,加到一个gif图片后面作为参数,可怜的gif文件其实什么也没有,就是用一个1*1的空白图片。访问了我们统计放在的图片,我的服务器当然会记录下来这个过程,因为的的tomcat开启了访问日志记录。
conf/server.xml打开注释掉的
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
这样我们就可以到日志记录文件里面去找结果了:
0:0:0:0:0:0:0:1 - - [11/Dec/2015:10:58:25 +0800] "GET /1.gif?domain=&url=file%3A%2F%2F%2FD%3A%2Ftmp%2Ftest.html&title=Document&referrer=&sh=768&sw=1366&cd=24&lang=zh-CN&apn=Netscape&apv=5.0%20(Windows)&apc=Mozilla&ua=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64%3B%20rv%3A42.0)%20Gecko%2F20100101%20Firefox%2F42.0&account=testname HTTP/1.1" 200 8080:0:0:0:0:0:0:1 - - [11/Dec/2015:11:00:06 +0800] "GET /ma.js HTTP/1.1" 304 -0:0:0:0:0:0:0:1 - - [11/Dec/2015:11:00:06 +0800] "GET /1.gif?domain=&url=file%3A%2F%2F%2FD%3A%2Ftmp%2Ftest.html&title=Document&referrer=&sh=768&sw=1366&cd=24&lang=zh-CN&apn=Netscape&apv=5.0%20(Windows)&apc=Mozilla&ua=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64%3B%20rv%3A42.0)%20Gecko%2F20100101%20Firefox%2F42.0&account=testname HTTP/1.1" 200 808
果然看到了谁从哪里通过什么设备在什么时候访问了test.html,这就达到了我们要记录的目的!!!
- 想通过图表来做个统计,按时间按设备等等方式来统计,想百度Google统计一样。这个好办,把日志文件抽取出来,写到数据库,然后写SQL来统计,剩下的你懂的,有了数据都好办了。
这个统计还可以用在其他的地方,比如推荐引擎
这个就简单说到这了,下次来个kafka、flume之类的来处理日志
阅读全文
0 0
- 数据收集---web访问日志收集与统计
- 数据收集---web访问日志收集与统计
- 收集web日志的目的
- Oracle收集表的数据与统计信息差异
- [大数据]flume日志收集
- linux日志统计文件命令收集
- 日志收集(for 分析错误/做统计):
- logstash与filebeat收集日志
- 使用logstash收集nginx访问日志
- 日志收集
- Trafodion 更新统计信息数据收集
- 万能日志数据收集器 Fluentd
- 数据清洗与收集week1
- 数据清洗与收集week2
- 数据清洗与收集week3
- 数据清洗与收集week4
- Oracle收集表与列统计信息
- 网站分析数据收集方式详解:Web日志JS标记和包嗅探器
- caffe(windows+cpu-only)cifar模型的生成与使用
- 自定义导航栏的返回按钮
- vs2017配置作业环境【opengl+opencv】
- vue 常用插件库总结
- java线程池
- 数据收集---web访问日志收集与统计
- python pp 库实现并行计算
- Hexo配置文件详细说明
- android 设置登陆密码显示和隐藏
- Convolutional Neural Networks for Sentence Classification论文解读
- mybatis学习总结一 快速入门
- 1075. 链表元素分类(25)
- USB供电不足的解决办法
- Java过滤器与SpringMVC拦截器之间的关系与区别