CLOG v0.6.3 - High-Visibility Caddy Log Viewer now available!

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.

It’s a single binary, zero config — just point it at your access log and go.
https://github.com/hellotimking/clog

Linux amd64 and arm64 builds available.

Quick install:

curl -sL https://raw.githubusercontent.com/hellotimking/clog/main/install.sh | bash

(or grab the binary directly from the releases page if you prefer)

Would love feedback from anyone who gives it a try, very open to adding / updating features!

5 Likes

I like the Top-IP in the dashboard mode and the simple ability to hide all “assets” like .css and images.

Would be great if you could add the user_id to the log lines columns.

2 Likes

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.

1 Like

This is great, thanks Tim.

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.

1 Like

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, this is very useful!

Could you support reading the log from stdin? This way, if the logs are in the systemd journal, you could do something like…

journalctl -u caddy -f -ocat | clog -
1 Like

Thanks Alexandros! Glad you’re liking it. :grin:
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.

2 Likes