Nodejs统计每秒记录日志数
问题:线上的写日志操作非常频繁,想统计每秒写了多少行数据?假如没法送一个消息写一个日志,问题也就变成了,每秒发送多少消息了。
日志采用log4js书写,格式如下:
[-- ::33.548] [INFO] lac -
[-- ::33.551] [INFO] lac -
[-- ::33.563] [INFO] lac -
[-- ::33.569] [INFO] lac -
[-- ::33.572] [INFO] lac -
思路:依次读取日志的每一行,解析出时间字段,如 11:23:33 作为一个哈希表的key,没碰到依次,统计值加1. 最后根据统计次数排序。
1)按行读取:使用readline模块,在createInterface函数中将已经创建的readStream对象传递给他即可。
2)监听readline模块的line事件,在其中可以读到每一行数据
3)监听close事件,当文件读取完成时会得到通知,在其中进行排序操作。
4)完成
代码如下:
var readline = require('readline');
var fs = require('fs');
if(process.argv.length != 3)
{
console.log("parameter: file.log");
return;
}
var logFile = process.argv[2];
var file = fs.createReadStream(logFile);
var rl = readline.createInterface({
input: file,
output: process.stdout,
terminal: false
});
var counter = {};
rl.on('line',function(line){
var items = line.split(' ');
if(items.length >= 2){
console.log("%s",items[1].substring(0,8));
var timestr = items[1].substring(0,8);
if(counter.hasOwnProperty(timestr)){
counter[timestr]++;
}else{
counter[timestr] = 1;
}
}
});
rl.on('close',function(){
rl.close();
file.close();
var keys = Object.keys(counter);
var arr = [];
for(var index in keys){
var key = keys[index];
arr.push({count:counter[key],key:key});
}
///sort by count descent
arr.sort(function(item1,item2){
return item2.count - item1.count;
});
for(var index in arr){
console.log('%s %d',arr[index].key,arr[index].count);
}
});
Nodejs统计每秒记录日志数的更多相关文章
- mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO
转载自:http://blog.chinaunix.net/uid-9370128-id-393082.html 1. mysql 5.0.x 统计每秒增,删,改,查,替换数 mysql 的show ...
- VS2012 利用正则统计项目代码行数
原文:VS2012 利用正则统计项目代码行数 #开头和/开头或者空行都不计入代码量, 搜索出来以后最后一行就是代码行数了:
- Visual Studio使用正则表达式快速统计总共代码行数
原文:Visual Studio使用正则表达式快速统计总共代码行数 按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: <span style="font-family ...
- wc 统计文件的行数,字数,字符
格式:wc 参数 文件 默认统计文件的行数,字数,字符. -l 统计有多少行数 -c 统计有多少个字节 -m 统计有多少个字符 -w 统计有多少个字数
- Atitit.Guibutton与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
Atitit.Guibutton与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数. 1. Kpi::: 代码行数(凝视行数,空白的行数), 方法数,class数 1 2. ...
- 让你的 JMeter 像 LoadRunner 那样实时查看每秒事务数(TPS)、事务响应时间(TRT)
熟悉 LoadRunner 的朋友一定不会对其 TPS(每秒事务数).TRT(事务响应时间) 等视图感到陌生,因为这是压力测试最为关键的两个指标.JMeter 以其开源.轻巧.灵活.扩展性高等特性赢得 ...
- Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数. 1. Kpi::: 代码行数(注释行数,空白的行数), 方法数,class数 1 2. 过滤器 ...
- 编写Java脚本统计工程代码总行数
在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写.不知不觉从一个Project发展到了七八个Project. 看着越来越多的代码,今天突然想统计一下一共写了多少代码.[这里只统计完 ...
- 使用PYTHON统计项目代码行数
目录 一 使用PYTHON统计项目代码行数 二 应用实例 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 使用PYTHON统计项目代码行数 遇到一个非常小的需求:统计一个项目里头的各类源代码 ...
随机推荐
- How To Debug Qmake Pro File
对于程序代码,我们经常使用到调试. 可是,对于有些项目的配置文件,比如Qt的Pro文件, 一个项目复杂的话,Pro文件就很容易出错. 此时的Pro文件,如果也能调试的话,那么是十分的快捷方便的. 解决 ...
- hashlib 算法介绍
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...
- Java JarFile 解析
Java JarFile 解析 package com.github.binarylei; import java.io.*; import java.net.URL; import java.net ...
- java 控制反转和依赖注入的理解
开始好好学习java基础和思想~ 控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~ 依赖注入(DI) 在我浅薄的 ...
- DataStage 一、安装
安装的详细信息记录于文档中,文档下载地址:http://pan.baidu.com/s/1pJCF9uN 密码: y2ry ;文档内容目录如下: DataStage 一.介绍和安装.......... ...
- [原创]分享本人自己PY写的BOOST编译程序(源码)
本程序WINDOWS专用,只做抛砖引玉,希望诸位按照各自需求自行修改,主要目的是为了让诸位编译时可以省一些组合指令的时间,只需要修改几个参数即可自动编译. 支持64位编译模式. 改进版本:http:/ ...
- maven scope简单说明
compile:默认的scope.任何定义在compile scope下的依赖将会在所有的class paths下可用.maven工程会将其打包到最终的arifact中.如果你构建一个WAR类型的ar ...
- Haodoop RPC解析
1. 前言 1 2. Hadoop RPC 1 2.1. 总体结构 1 2.1.1. RPC Interface 1 2.1.2. RPC Server 1 2.1.3. RPC Client 1 2 ...
- HRBUST1310 火影忍者之~鸣人 2017-03-06 16:01 104人阅读 评论(0) 收藏
火影忍者之-鸣人 火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国 ...
- 安装TestNG在eclipse中的插件
两种方法可以安装TestNG Eclipse插件: 第一种,离线安装 TestNG Eclipse插件下载地址http://testng.org/doc/download.html. 下载下来以后,放 ...