使用readline异常退出问题
发布于 3 年前 作者 ntfs32 2146 次浏览 来自 问答
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问题,但是确实被执行了

回到顶部