DEV Community

Mu Micro
Mu Micro

Posted on

JSON logs in your terminal are unreadable — so I built `jlog-watch`

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)