Node.js如何捕获日志中特定字符串所在行对应的全部下一行内容
Node.js 提取指定字符串所在行的下一行内容实现方案
使用Node.js内置的readline模块实现,无需安装第三方依赖,支持大文件逐行读取,不会占用过高内存。
实现代码
const fs = require('fs'); const readline = require('readline'); // 配置项,可根据实际需求修改 const LOG_FILE_PATH = './test.log'; // 你的日志文件路径 const TARGET_STRING = 'Compile Error'; // 要匹配的目标字符串 const result = []; // 标记位:标记下一行是否需要捕获 let needCaptureNextLine = false; const rl = readline.createInterface({ input: fs.createReadStream(LOG_FILE_PATH), crlfDelay: Infinity // 适配所有操作系统的换行符 }); rl.on('line', (currentLine) => { // 上一行匹配到目标,当前行直接存入结果 if (needCaptureNextLine) { result.push(currentLine.trim()); needCaptureNextLine = false; return; } // 当前行匹配到目标,标记下一行要捕获 if (currentLine.trim() === TARGET_STRING) { needCaptureNextLine = true; } }); rl.on('close', () => { console.log('捕获到的所有内容:'); console.log(result); // 结果写入本地文件 fs.writeFileSync('./output.txt', result.join('\n')); console.log('结果已保存到同目录下的output.txt'); });
使用步骤
- 替换代码中
LOG_FILE_PATH为你的实际日志文件路径 - 可根据需求调整匹配规则:
- 精确匹配整行:保留
currentLine.trim() === TARGET_STRING即可 - 模糊匹配(行内包含目标字符串就算匹配成功):修改为
currentLine.includes(TARGET_STRING)
- 精确匹配整行:保留
- 运行脚本:
node 你的脚本文件名.js
运行输出示例
针对你给出的示例日志,运行后得到的结果为:
./aaarty/bbb/cfvcc/dddhjklpi ./asshtyd/wrfber/ghn/fffh/gh/ikjmlk ./cc/wwwasftbb/kkk/tgfh/pioqascfg/qqq
内容的提问来源于stack exchange,提问作者lugman
相关产品推荐
相关产品推荐

