使用readline异常退出问题
var cahce_seek_index = CONFIG.cache_key.log_read_end + seek_index;
redis.get(cahce_seek_index).then(function (data) {
//标识位不存在或者比现在文件大小字节数还大的,都认为从新文件第一行开始读取
console.log(data);
if (data == null || data > end_Bytes) {
start_Bytes = 0;
} else {
start_Bytes = data;
}
//将stream流给readLine流处理
var objReadline = readLine.createInterface({
input: fs.createReadStream(log_path, {start: parseInt(start_Bytes)})
});
objReadline.on('line', function (line) {
var tmp = 'line' + index.toString() + ':' + line;
console.log(index, line);
index++;
});
objReadline.on('close', function () {
// redis.set(cahce_seek_index, end_Bytes);
console.log('此次任务解析行数:' + index);
process.exit();
});
});
比如文件有10万行,每次读取到5000行左右就会退出,而且并没有执行close事件,是什么问题导致的呢
5 回复
实现的需求是读取文件,结束后记录stream结束位置字节数,下次从这里开始继续解析日志
已经解决,知识shell输出异常,数据确实读取完了,console.log后面没输出了而已
@ntfs32 不太懂,能不能具体说一下问题?console.log打印次数的限制?
@SHocker-Yu 平常我也没遇到console.log打印限制 但这儿后来确实发现是只打印了一部分 ,后面没打印,连close事件里面的输出也没打印,但是它确实是都读完了。。。比较郁闷
@SHocker-Yu 循环一行行的读取,发现后面的没打印出来 ,不知道是不是console.log问题,但是确实被执行了