ログ設計

ログについてどんな時にどんな内容で出力すべきかよくわかっていなかったため、調べて自分なりにまとめてみることにしました!

 

ログとは

履歴などが記録されているものです。

Railsでは /log/ 配下に保存されています。

MacPCのログなどもコンソールというアプリを使って確認することができます。

 

何故ログを出力するのか

ログを出力しておくことで、不具合が発生した時などに証拠や原因を特定できるようにするためです。

そのほか、ログを大量に解析してユーザーの傾向などを分析するためにも使われるようです。

サービスによってどのくらい細かくログを残しておくべきかも変わってくるようです。

 

ログレベルと概要

RailsではActiveSupport::Loggerクラスを利用してログの出力を行います。

実行環境ごとに異なるレベルでログを出力できます。

ログレベルには以下の5つのレベルがあります。

fatail  :致命的なエラー

error  :プログラムで制御できるエラー

warn  :警告

info    :管理に役立つ内容

debug:開発者向けの情報

 

 

 

ログを出すべき内容とレベル

運用中トラブルがあった際、ログを検索して解決ができるように、

info以上のレベルで、5W1H(いつ・どこで・誰が・なぜ・どのように・何をしたか)がわかるように出力すると良いそうです。

出力される情報が少なすぎ or 多すぎると、問題の原因を探すのが不可能 or 大変になってしまったり、アクセスが急増した時にはログファイルに書き込めずアプリが落ちてしまうこともあります。。。

アクセスが大量 & 細かいログを残して解析する必要がある時などはAmazonAtenaなど活用することもあるようです。

 

 

(例)バッチアプリケーションのログ出力一例
info 処理開始時
info 途中経過
info 処理終了時
warn イベント発生時
error 例外発生時
info その他、必要に応じて

 

 

 

 

感想その他

深く考えず他の場所と同じような書き方でログを出力させてしまっておりましたが、何をログとして残しておくべきかしっかり考えないといけないな、と気づきました。

どんな不具合が発生しそうか、その時にどんな情報があったらいいか、など考えた上で出力させる内容を絞っていきたいと思います!

また、本日はShinjuku.rbさんにお邪魔して調べたり作業をしていたのですが、実際にアプリを運用していく中でのログの活用法についてのお話や、アプリ以外でのログの話についてもお聞きすることができ良かったです!

 

 

 

参考文献

railsguides.jp

dev.classmethod.jp

seri.hatenablog.com

qiita.com