The problem
Structured JSON logs from frameworks like pino and bunyan are unreadable with tail -f — every line is a compact JSON blob with no color, no level emphasis, and no field alignment.
If you've hit this before, you know how it goes — you end up installing pino-pretty globally, or just squinting at raw JSON blobs in the terminal.
As a solution, I created jlog-watch
Watch a JSON log file and pretty-print each new line with ANSI colors and aligned fields
Zero dependencies. Run it immediately without installing anything:
npx jlog-watch app.log
Output:
$ jlog-watch app.log
● jlog-watch watching /project/app.log
Press Ctrl+C to stop
2026-05-19 04:00:01.412 INFO server listening port=3000
2026-05-19 04:00:02.118 DEBUG incoming request method=GET path=/health
2026-05-19 04:00:07.551 ERROR unhandled exception err={"code":"ECONNREFUSED"}
^C
──────────────────────────────────────────
Stopped. errors seen: 1
How it works
Pure Node.js using fs.watchFile() for change detection, manual byte-position tracking to read only new bytes since the last event, JSON.parse per line, and ANSI escape codes for coloring — zero npm dependencies.
Why I built it
Found repeated complaints on r/node and r/devops about having to install pino-pretty or the bunyan CLI just to read your own app logs in development. Existing zero-dep alternatives either don't watch live files or require piping stdout rather than watching a persisted log file. A zero-dep file watcher that works on any JSON-per-line log file and shows clear ANSI output fills the gap cleanly without touching application code.
Try it
npx jlog-watch app.log
Part of µ micro — one new developer tool, shipped every day. All tools are zero-dependency Node.js and run instantly with npx.
Top comments (0)