reqlog at a glance
As of June 4, 2026

reqlog (v0.7.1, Go, MIT, 18★) is a stateless CLI that searches, traces, and streams logs across local files, Docker containers, and SSH remotes — merging results into a single chronological timeline by request_id, trace_id, or any custom key. Ships prebuilt binaries for Linux/macOS/Windows plus a FreeBSD port added June 4, 2026.

request_id from the error response and now you need to find it — across three places at once: a local log file on the app server, a Docker container running the auth service, and a remote host you can only reach over SSH. The flow touched all three. You know the ID. You don't know the sequence.grep commands, three walls of output, manual timestamp alignment. If the services are busy, the interleaved noise makes it worse.reqlog (v0.7.1, 18★, Go, MIT) is a CLI by backend engineer Sagar Maheshwary that treats your whole infrastructure as a single log surface. The author describes it as a way to "make distributed log debugging feel like using grep on a single machine." 1go install github.com/sagarmaheshwary/reqlog/cmd/reqlog@latestyay -S reqlog-binpkg install reqlogcurl -fsSL https://raw.githubusercontent.com/SagarMaheshwary/reqlog/master/install.sh | bashtrace_id in the response body is abc-1234. It passed through three hops: the app server writes structured logs to /var/log/checkout/app.log, the payments service runs in Docker as payments-svc, and the fraud-check runs on a remote host at 10.0.1.20.reqlog search \
--file /var/log/checkout/app.log \
--docker payments-svc \
--ssh [email protected]:/var/log/fraud/app.log \
--key trace_id \
--value abc-1234request_id, correlation_id, or any arbitrary key-value pair your service emits. For live tailing across all three sources simultaneously:reqlog search --file /var/log/checkout/app.log --docker payments-svc -freqlog search --file /var/log/checkout/app.log --since 30m --key request_id --value abc-1234--limit. Each source runs its own scanner (FileScanner, DockerScanner, or an SSH/SFTP transport) feeding into a shared LineProcessor pipeline — stateless, no agent to install on remote hosts, no log shipper required. 1--limit N flag doesn't pull N lines total and stop. It fetches up to N matching lines per source, merges them chronologically, then keeps the global top N. The author's reasoning: if you have three services and one is very busy, a naive global limit would fill the output with only that service's entries. The per-source-then-merge approach keeps the timeline representative. 1strings.Contains pre-check before any heavier parsing — relevant on large log files where most lines don't match.
[email protected] on June 4. 2 It's also listed on Terminal Trove under Go/MIT. 4request_id / trace_id / correlation_id field. Freeform log formats will still match on the string value, but the chronological merge relies on timestamp parsing — irregular formats may sort oddly.go install github.com/sagarmaheshwary/reqlog/cmd/reqlog@latest
이 콘텐츠를 둘러싼 관점이나 맥락을 계속 보강해 보세요.