codissy v1.4.2
A small command-line tool for filtering, transforming and summarising structured logs. Reads JSON, logfmt or plain text from stdin and gives you back something readable.
$ kubectl logs -n prod web-7c5d | codissy filter status=5xx | codissy summary path
path count p50 p99
──────────────────────────────────────────────────────
/api/v2/checkout 142 180ms 1.2s
/api/v2/orders/{id} 97 220ms 890ms
/api/v2/payments/webhook 18 340ms 2.1s
/healthz 3 15ms 18ms
What it does
Stream-friendly
Reads stdin, writes stdout. Plays well with pipes, tail -f and journalctl.
Format-agnostic
JSON, logfmt, common log format, or your own pattern via --regex.
Fast filters
Expression-based filtering: status>=400 and method="POST".
Group & aggregate
Counts, percentiles, rates — without leaving the shell.
Single binary
One static executable, no runtime. ~4 MB on Linux/amd64.
Friendly output
Tables in TTY, JSON when piped. Colours when it makes sense.
Why another log tool?
Because jq is wonderful but not the right shape for ad-hoc log triage,
awk requires you to be sober, and the "log analytics platform"
in the cloud costs more than the application that produced the logs.
codissy is what happens when you spend a few too many incident calls
squinting at a tail -f in a tmux pane.
Quick taste
# show only failed requests, last 1000 lines
tail -n 1000 /var/log/nginx/access.log | codissy filter 'status >= 500'
# count requests by status code
journalctl -u myapp.service --since "1h ago" | codissy summary status
# pull a single field out of JSON logs
docker logs api 2>&1 | codissy pick request_id duration_ms path
# follow a live stream, highlighting errors
kubectl logs -f deploy/worker | codissy filter 'level in [warn, error]' --color