Railsのログになんで色ついてるかなんて気にしたことなかった

会社でも個人でも使っているRails

macで開発をしていて log/development.log をtailしてみると綺麗に色がついたログが流れてくる

f:id:hatappi1225:20170412191932p:plain

ただこれを本番とかで使用しているLinux上で less log/development.log で見たら文字化けっぽくなってた

f:id:hatappi1225:20170412192123p:plain

解決策としては

# config/environments/production..rb
config.colorize_logging = false

のようにしてあげれば、色がつかなくなり見られるようになるが、そもそもなんでこうなるんだっけってのが分からなかったので調べた

この色がつくのは ANSIカラーシーケンスと呼ばれるもので、エスケープシーケンスという通常の文字列で表すことの出来ない文字などを特定の文字列で実現しており
今回の色とかになると

$ print "\e[34mBLUE\e[0m"

こんな感じで記載すると青色でBLUEがコンソールに出て来る 上記の文字列でいう \e[34m というのがこれ以降を青色で出してねという命令で \e[0m というのがこれ以降をリセットする命令とのこと