import { createReadStream } from "node:fs"; const filePath = process.argv[2] ?? "events.log"; const stream = createReadStream(filePath, { encoding: "utf8", highWaterMark: 32, }); let chunks = 0; let bytes = 0; let lines = 0; let errorLines = 0; let carry = ""; function countRecord(record) { if (record === "") return; lines += 1; if (record.includes("ERROR")) { errorLines += 1; } } try { for await (const chunk of stream) { chunks += 1; bytes += Buffer.byteLength(chunk, "utf8"); const records = (carry + chunk).split("\n"); carry = records.pop() ?? ""; for (const record of records) { countRecord(record); } } countRecord(carry); console.log(`file=${filePath}`); console.log(`chunks=${chunks}`); console.log(`bytes=${bytes}`); console.log(`lines=${lines}`); console.log(`errorLines=${errorLines}`); } catch (error) { console.error(`Failed to read ${filePath}: ${error.code ?? error.message}`); process.exitCode = 1; }