日々のサーバメンテでは tail -f で apache のアクセスログを監視したりするわけですが、「監視対象の文字列」を目視確認するにはやはり色分けした方が良いわけで、少し調べてみました。
Free Dynamic DNS(DDNS) by POP3,IMAP4,FTP,HTTP-BASIC for Home Server, VPS | MyDNS.JP さんにそのものズバリのやり方が載っていたのですが、
tail -f access_log | perl -pe 's/POST/\033\[1;36m$&\033\[0m/gi'
なんてとうてい覚えられませんw
ので、スクリプトにしてみました。
#!/usr/bin/perl die "usage: $0 expr\n" if (@ARGV != 1); # highlight color #my $hc = "0;30"; # Black #my $hc = "0;31"; # Red #my $hc = "0;32"; # Green #my $hc = "0;33"; # Brown #my $hc = "0;34"; # Blue #my $hc = "0;35"; # Purple #my $hc = "0;36"; # Cyan #my $hc = "0;37"; # LightGray #my $hc = "1;30"; # DarkGray #my $hc = "1;31"; # LightRed #my $hc = "1;32"; # LightGreen #my $hc = "1;33"; # Yellow #my $hc = "1;34"; # LightBlue #my $hc = "1;35"; # LightPurple my $hc = "1;36"; # LightCyan #my $hc = "1;37"; # White while (<STDIN>) { s/$ARGV[0]/\e[${hc}m$&\e[0m/g; print; }
これを /usr/local/bin/colorsed や ~/bin/colorsed に保存して、
tail -f /var/log/httpd/access_log | colorsed "takke.jp"
なんてすると、指定した文字列が$hcで指定した色で表示されます。実行権を忘れずに。
tail -f /var/log/httpd/access_log | colorsed "^.*?\.jp"
とするとjpドメインからのアクセスを色づけできるわけですね。
ちなみにgrepだとgrep --colorで良いようです。
alias grep='grep --color'
はオススメ。