Hey all, I’ve been running Caddy for a while and got tired of squinting at raw JSON log streams. I built CLOG to solve that — it’s a lightweight terminal tool that transforms Caddy’s structured access logs into a clean, human-readable format.
It tails your log file in real time, colour codes statuses, and has a full dashboard mode which gives you a live RPS counter and status code distribution at a glance. There’s also filtering by host, URL, errors only, and an option to hide asset requests so you can focus on actual page hits.
Glad you like the dashboard mode, and hiding assets, and the user_id is a great suggestion to add to the columns!
I’ve been toying with the idea of adding a config-first stance with the next version that would allow a user to config the exact columns of data they’d like to see.
One suggestion would be a configuration option to allow specifying a Header to use for the client IP. For using Caddy within a docker environment, or behind a CDN (ie: any scenario where there is an upstream proxy), an alternative header will be preferred for detecting the useful original client IP.
Interesting thought. What I might do is have the app detect current WAN IP and Docker networks and flag the results in the output (with a colour) that way it will be easy to differentiate internal vs external traffic. I’ll probably add it as a flag rather than direct config for the moment.
Still considering the need for a separate config file.
Thanks Alexandros! Glad you’re liking it.
Reading from stdin isn’t something I had on the roadmap, but I think it’s a great idea.
I’m already having people ask me to make it more universal (beyond just caddy for other app logs) so I think this input type fits right in.
I’ll see what I can do in the next few iterations.