ログに色をつけるスクリプト試し書き

syslog に色をつけてみるテスト。

tail -f /var/log/syslog | ruby log_color.rb

とかやると適当に色つきで表示される。

#!/usr/bin/ruby1.8 -Ku

ESC_DEFAULT = "\x1b[39m"
ESC_RED     = "\x1b[31m"
ESC_YELLOW  = "\x1b[33m"
ESC_BLUE    = "\x1b[34m"
ESC_CYAN    = "\x1b[36m"

ARGF.each do |line|
   line.chomp!

   date, hostname, msg =
       line.scan(/^([A-Z][a-z][a-z] \d+\ \d+:\d+:\d+) (\S+) (.*)$/)[0]

   esc_code = nil
   case msg
   when /-- MARK --/
      # no output
      next
   when /\/usr\/sbin\/cron/i
      esc_code = ESC_YELLOW
   when /^kernel/
      esc_code = ESC_CYAN
   end

   printf "%s %s %s%s%s\n", date, hostname, esc_code, msg, ESC_DEFAULT
end