博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js 日志处理(fs,readline,stream)
阅读量:7244 次
发布时间:2019-06-29

本文共 2230 字,大约阅读时间需要 7 分钟。

2015-12-2 11:09:30

实现了逐行读取文件,分析内容并把符合要求的内容写到另外一个文件中。

但是还是只实现了一半想要的功能。

最想要的功能是读取到指令超时记录的时候,再向上寻找到和这条记录对应的另外一行发指令的记录。

但是没有找到什么按行读取文件的方法,也就没法按照当前的行倒序向前读取去寻找对应的发指令记录。

想先把文件倒序来写到另外一个文件中,但是还是找不到在文件头附加新内容的方法,现有的方法都是在文件尾附加新内容。

如果发指令对应的采集器只有一个就好了,就可以从头开始寻找,虽然有点慢但还能找到。现在从头开始找的话几乎必然不是超时记录对应的那条指令。。。。

var fs        = require('fs');var readline  = require('readline');var stream    = require('stream');var streamFile = function(filename){    var instream  = fs.createReadStream(filename);    var outstream = new stream;    return readline.createInterface(instream, outstream);}var rl = streamFile('./logorder2015_12_1.txt');var i = 0;var startTime,stopTime;var errCount = 0;var colectorNum = '';var Datetemp1 = new Date();startTime = Datetemp1.getFullYear() + "-" + (Datetemp1.getMonth() + 1) + "-" + Datetemp1.getDate() + " " + Datetemp1.getHours() + ":" + Datetemp1.getMinutes() + ":" + Datetemp1.getSeconds() + ":" + Datetemp1.getMilliseconds();rl.on('line', function(line) {    if(i <= 20000 ) {            var data = line.toString();        var err = new RegExp('指令超时');        if(err.test(data)) {            errCount ++;            colectorNum = data.substr(data.length - 15 , 9);            console.log(colectorNum);            // console.log(line.toString());            // fs.appendFileSync('超时记录.txt', data + '\r\n', options = { encoding: 'utf8'});        }        // console.log(i + '、' +line.toString());        // console.log(rl.outstream.toString());           } else {        console.log('\n总共输出了' + (i-1) + '行');        rl.close();    }    i++;    // var req = someProcessingJob(line);    // someStatisticJob(req);    //类似forEach,处理每行日志的数据,一般先读,再执行统计代码});rl.on('close',function(){    var Datetemp2 = new Date();    stopTime = Datetemp2.getFullYear() + "-" + (Datetemp2.getMonth() + 1) + "-" + Datetemp2.getDate() + " " + Datetemp2.getHours() + ":" + Datetemp2.getMinutes() + ":" + Datetemp2.getSeconds() + ":" + Datetemp2.getMilliseconds();    console.log('\n输出结束!');    console.log('开始时间:' + startTime);    console.log('结束时间:' + stopTime);    console.log('指令超时的数量为:' + errCount + '个');    //文件结束,整理一下统计数据并输出    process.exit(0);   //加上这一行可以强行结束程序,否则还会继续输出接下来的3,4,5,6直到最后一行。});

 

转载于:https://www.cnblogs.com/lswit/p/5012400.html

你可能感兴趣的文章
CentOS5.x下安装配置FTP服务器
查看>>
正则数量词及非捕获
查看>>
MPLS 配置步骤
查看>>
Exchange Server 2007灾难恢复(AD+Ex)
查看>>
GRUB2
查看>>
Go性能优化技巧 1/10
查看>>
DNS 域名解析服务器---案例详解
查看>>
疑似电信版GALAXY S4现身官网 或配八核处理器
查看>>
我的Linux生涯之系统语言环境及中文输入法的操作
查看>>
c#获取当前页面名字
查看>>
客户端自动化技术漫谈
查看>>
mysql 优化之 查询
查看>>
TCP协议中的三次握手和四次挥手(图解)
查看>>
YII assets使用
查看>>
未来已来——工作空间 WorkSpace 和物联网 IoT (2)
查看>>
从零开始玩人工智能-机器人服务-05
查看>>
Google API V2申请及Google Map简单应用例子
查看>>
CXF开发WebService客户端
查看>>
实现一个简单的等待进度盘
查看>>
安全、高效、专业 —— 码云企业版
查看>>