接手一个需求,要求前端作一个数据监控统计分析平台,这个就涉及到日志的存储分析等功能,经过调研将内容分为如下几点:前端
为了节约学习成本,咱们选择了node做为后端语言,下一步框架的选择,提到Node.js开发,不得不提目前煊赫一时的2大框架express和koa。经对比后,Express诞生已有时日,是一个简洁而灵活的web开发框架,使用简单而功能强大,生态较为完善,最终选择express框架开发。node
咱们从这几个方面来作选型:mysql
1.每行日志都须要有准确无误的时间戳web
2.日志格式容易被计算机进行分析处理sql
3.容许多个可配置的目标流
调研了三个目前比较受欢迎的框架数据库
最终咱们以解析存储日志为重要考虑方向,选择了bunyan。express
安装(Installation)npm
npm install bunyan --save
使用(Usage)后端
var bunyan= require('bunyan'); var log=bunyan.createLogger({name:'myapp'}); log.info('hi');
输出:app
{"name":"myapp","hostname":"pwony-2","pid":12616,"level":30,"msg":"hi","time":"2014-05-26T17:58:32.835Z","v":0}
1.日志存储方式
采用node的fs来进行文件的建立,将日志存储在项目的logs_store文件夹下,日志文件又分为两个类型,trace和debug,按日期小时分别存在不一样的文件夹下,如图所示。
2.日志存储内容
将请求中的参数,时间戳,user_agent,host等须要的信息存储下来,格式大体以下:
{ "time":1553680369929, "qs":{ "action": "click", "action_id": "opendetail" }, "host":"127.0.0.1:3000", "user-agent":"....." }
最终选定mysql,没有其余缘由,只是由于比较熟悉。
有了数据存储分析等一系列操做,最终如何展现呢?咱们公司正好有一个开放的报表平台,直接请求数据库或API便可展现图标内容,so最后一步就这么轻松搞定啦