本篇文章将在上篇文章存储网络请求日志中对日志进行分析。
- 日志是按行存储的,一行就是一条日志
- 使用 nodejs 的 readline(基于stream,效率高)
utils/readline.js
对日志进行逐行读取,并统计出Chrome浏览器占比。
const fs = require('fs')
const path = require('path')
const readline = require('readline')
// 文件名
const fileName = path.join(__dirname, '../', '../', 'logs', 'access.log')
// 创建readSream
const readStream = fs.createReadStream(fileName)
// 创建readline对象,内部是基于stream进行文件读写
const readLine = readline.createInterface({
input: readStream
})
let chromeNum = 0
let total = 0
// 读取日志
readLine.on('line', (log) => {
if (!log) {
return
}
total++
const arr = log.split(' -- ')
console.log(total+':'+ arr[2])
if (arr[2] && arr[2].indexOf('sougou') >= 0) {
// 累加Chrome数量
chromeNum ++
}
})
// 监听读取结束
readLine.on('close', () => {
console.log('Chrome 占比: '+chromeNum/total)
})