nginx のアクセス ログが入ってくるとそれを通知し、生のログをカラフルな情報にフォーマットする、有効な bash スクリプトがあります。
残念ながら、既に作成したものを取得して、リクエストの User-Agent を表示する方法がよくわかりません。どの User-Agent が使われたか一目でわかるようにしたい。Googlebot でしたか?WindowsのFirefox 22でしたか?
私が持っているbashスクリプトは次のとおりです。
#!/bin/bash
LOG_DEFAULT_PATH="/var/log/nginx/access.log"
LOG_PATH="$1"
if [ "$LOG_PATH" = "" ] && test -f "$LOG_DEFAULT_PATH"; then
echo -e "\033[35mAuto-detected Log File: \033[32m$LOG_DEFAULT_PATH\033[0m"
LOG_PATH="$LOG_DEFAULT_PATH"
fi
if [ "$LOG_PATH" = "" ]; then
echo -e "\033[32mUsage: $0 /path/to/nginx/access_log\033[0m"
else
(tail -n 500 -F $LOG_PATH | awk '{printf "%s%s %s %s%s%s %s %s %s%s%s %s%s\n", "\033[40;1;35m", $5, $6, "\033[0;32m", $1, "\033[37m", $10, substr($7, 2), "\033[31m", $8, "\033[36m", $2, "\033[0m"}')
fi
スクリプトの本体は、tail コマンドで始まる行にあります。awk を使用して、リクエストのさまざまな部分を端末に出力し、各部分に色を付けています。ここで、User-Agent 情報も表示されると思います。
ログ形式は次のとおりです。
log_format vhost_combined '$http_host $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
もちろん、より良いスクリプトに関する提案も大歓迎です!