Seiichi Yonezawa

“How creativity is helped by failure”

2017-03-01

ログを見る習慣

今日はいわゆるステージング環境というサーバーで、Railsのログを見る方法について考えてみました。
サーバーのログというと、Apacheのようなまさしくアクセスログのような情報がまとまっているものだと思っていました。しかし、Railsのログはまさしく普段見ているログと何ら変わりなく、SQLに色がついていたりします。問題はこの色、いわゆるEscape文字ですが、lessのようなコマンドでは文字がエスケープされてしまうため、一時期はログからエスケープを除去する方法を考えていました。ですが、それはさすがに時間がかかりすぎるため、重い腰を上げて調べました。

less -R log/production.log

bash - color escapes codesより、このように引数-Rを加えることで非破壊的にログを調べることができるようになりました。また、/で単語を検索したあとはnNで次の候補に移動できることもついでに覚えました。このおかげで無事トラブルシューティングができてご満悦状態。

また、もう一つ気にかかったのは、ある時点でIncreasing the amount of inotify watchersこのエラーが頻発して開発すらままならない状況になりました。Wikiにあるコマンドはもちろん、tmpディレクトリを空にしたり、大量にあったdbをすべて空にしたり、gemをすべてインストールしなおしたり、挙げ句の果てにはVagrant Boxを破壊してみましたがどれも効果はありませんでした。

さすがにOSをインストールしても直らないのでお手上げかとも思ったんですが、ちょうどpublicになんと数GBもの画像が必要だったので配置してありました。つまり、Railsを起動しようとする時にこれらのファイルの変更もすべて監視しようとした結果エラーが表示されてしまっていたわけです。画像のリンクは切れてしまうのが残念ですが、大部分は必要のないファイルなので一気に削除すると、無事元どおりに。

こちらは開発環境依存で、ログに残らない問題でしたが開発の効率はいかに早く問題点を見つけることが重要なので(まあ、私は普段保守担当というのもありますが)こういったスキルは伸ばしていきたいなぁと思う次第です。