DEV Community

Mu Micro
Mu Micro

Posted on

JSON logs from pino/winston/bunyan are unreadable as raw text — so I built `json-log-dash`

The problem

JSON-structured logs from node servers (pino, winston, bunyan) are unreadable as raw text — you end up piping through jq one query at a time or squinting at minified lines, with no way to filter by level or expand nested fields without a paid cloud service.

If you've hit this before, you know how it goes — you write a throwaway jq alias, copy the same pipeline from Stack Overflow, or just accept the pain.

As a solution, I created json-log-dash

Spin up a local web dashboard to browse, filter, and inspect JSON log files.

Zero-dependency Node.js, run it immediately:

npx json-log-dash server.log
Enter fullscreen mode Exit fullscreen mode

Or pipe from a running process:

node app.js | npx json-log-dash
Enter fullscreen mode Exit fullscreen mode

Output:

json-log-dash — 1,243 entries loaded

  Server: http://localhost:7777

  Press Enter to stop.
Enter fullscreen mode Exit fullscreen mode

This opens a browser dashboard with:

  • Level filter buttons (trace / debug / info / warn / error / fatal)
  • Full-text search across all fields in every record
  • Click any row to expand and see the full JSON with syntax highlighting
  • Handles pino numeric levels, winston string levels, bunyan — normalised automatically

How it works

Pure Node.js with no dependencies. Reads newline-delimited JSON with readline, serves a self-contained HTML page via http.createServer (port 7777), inlines all CSS and JS as a template literal, and opens the browser with child_process.exec. The server shuts down after 60 seconds of inactivity or when you press Enter.

Why I built it

Found repeated complaints on r/node and Stack Overflow about pino/winston JSON logs being unreadable in the terminal. Tools like pino-pretty only colorize the terminal — none provide a local browser UI with filtering and expandable records. No popular zero-dependency npm package fills this gap.


Part of µ micro — one new developer tool, shipped every day.

Top comments (0)