23 lines
751 B
Bash
23 lines
751 B
Bash
#!/bin/sh
|
|
# Tail Caddy's JSON access log, transform each entry into Apache CLF
|
|
# Combined with the virtual host glued to the request URI, and feed
|
|
# the stream straight into goaccess via stdin. Result: every line in
|
|
# the Requests panel renders as `host.example.com/path`.
|
|
|
|
set -eu
|
|
|
|
ACCESS_LOG="/srv/logs/access.log"
|
|
|
|
JQ_FILTER='
|
|
"\(.request.remote_ip // "-") - - " +
|
|
"[\((.ts // 0) | gmtime | strftime("%d/%b/%Y:%H:%M:%S +0000"))] " +
|
|
"\"\(.request.method) \(.request.host)\(.request.uri) \(.request.proto)\" " +
|
|
"\(.status) \(.size) " +
|
|
"\"\(.request.headers.Referer[0]? // "-")\" " +
|
|
"\"\(.request.headers["User-Agent"][0]? // "-")\""
|
|
'
|
|
|
|
tail -F -n +1 "$ACCESS_LOG" \
|
|
| jq --unbuffered -rc "$JQ_FILTER" \
|
|
| exec goaccess - "$@"
|