Ruby on Rails のログの読み方【これができれば脱初心者】

Ruby on Rails

rails s で表示されるあの英語はなんですか?

分かるようになったほうがいいでしょうか

動作を理解するにはログを読めと言われたんですが何をどのように読めばいいんでしょか・・・

そういった疑問にお答えします。

ログ情報はアプリケーションの動作を把握するための基本情報です。
実装時もエラーが出たときもいつもログが活躍します。
ログが読めるようになれば Ruby on Rails の中級者といってもいいでしょう。

本記事では Ruby on Rails のログにどのような情報が書いてあるかを解説します。

rails s のログ

このように rails s を実行したターミナルにずらずらと表示される英語の文章はアプリケーションのログです。

ログの保存場所

rails s を実行したターミナルに流れる情報は消えてしまいますが、ログはログファイルに保存されています。
開発時のログはデフォルト設定では log/development.log に保存されます。

開発時は development 環境であるため log/development.log に保存されます。
本番環境(production 環境)の場合はデフォルト設定では log/production.log に保存されます。

1リクエスト=1ブロック

ログは HTTP リクエスト一つに1ブロックで表示されます。
例えば以下のようなログが表示されている場合は

以下のようにリクエスト毎にブロック分けされています。

ブロック間は2行の空行がはさまり、見やすくなるように配慮されています。

あるリクエストに対するログを探したいときは、このブロック単位で探すと効率がよいでしょう。

ブロック内(1リクエスト分)に書いてある情報

それでは内容を個別に見ていきましょう。

HTTPメソッド+パス

一行目に HTTP メソッドパスが出力されます。

リクエストはHTTPメソッドとパスのペアで決まりますので、ここを目印にブロックを探すとよいでしょう。

コントローラ#アクション

実行されたコントローラ#アクションが出力されます。

コントローラとアクションは「HTTP メソッド+パス」「ルーティング」の二点から導き出せるので場合によっては見る必要はありません。
しかし、ルーティングを確認せずともどのクラスのどのメソッドが呼ばれているのかがわかるので便利です。

パラメータ

HTTPリクエストで送信されたHTTPパラメータが Ruby のハッシュ形式で表示されます。

HTTP パラメータには以下の2つの情報が表示されます。

  • URL のクエリパラメータ(URLの ? 以降)
  • POSTなどで送られるフォームパラメータ

HTTPパラメータを確認すれば「想定したパラメータが送信されているか」を確認することができます。

FILTERED

値が [FILTERED] となっているところがありますが、これはセキュリティに配慮されたものとなります。
トークンやパスワードなど、例え運営者であっても見せるべきではないパラメータがこのようにマスクされます。
どのパラメータがマスクされるかは Rails 6.1 の場合、config/initializers/filter_parameter_logging.rb に記載されており、追加することもできます。

SQL

実行されたSQLを確認できます。

  • where で指定された条件が正しいか
  • insert や update で登録しようとしている値は正しいか

など想定していたSQLとなっていたかを確認することができます。

render

呼び出されたビューファイルを確認できます。
想定したビューファイルを render で呼び出されているかを確認できます。

生成されたHTMLの中に不備がある場合、どのビューファイルを見ればいいかの手助けになります。

redirect

リダイレクトが発生した場合、どのURLへリダイレクトされたかが出力されます。

  • リダイレクトされることは想定通りか
  • リダイレクト先のURLは正しいか

などを確認することができます。

「リダイレクトって何?」という方は以下の Rails でのリダイレクトについての解説記事を参考にしてください。
>> redirect_to によるリダイレクトの方法を徹底解説

ステータスコード

HTTPのステータスコードが表示されます。
ステータスコードはHTTPレスポンスに含まれる情報で以下のようになります。

  • 成功→200番台
  • リダイレクト→300番台
  • エラー→400番台、500番台

処理にかかった時間

処理時間が表示されます。
以下の順に表示されています。

  • 合計時間
  • ビューの処理にかかった時間
  • DBアクセスにかかった時間

が表示されます。

実行時間が想定よりもかかっている場合、それがビューの処理のせいなのかDBアクセスが遅いのかを確認して、改善の手がかりとすることができます。

まとめ

本記事では Ruby on Rails のログに何が出力されるのかを解説しました。

ログが読めるようになることは中級者となるためのポイントです。

複雑に見えがちですが何が書いてあるかがわかればそれほど難しいものではなく、読む意識を続ければすぐに慣れます。

ログを読めるようになって効率よく開発できるようになりましょう!

タイトルとURLをコピーしました