Ruby on Rails

【Rails】logger.debugを活用する

どうも、バートリーのさいとうです。

今回は

Railsの開発におけるログの確認方法

についてお話ししていきたいと思います。

書く背景

初心者であったり、開発初心者の方であればあるほど、ログを見ることに抵抗があるのではないでしょうか。

僕もそうです。実務1ヶ月目で、まだ慣れないところもあります。

すでにあるサービスを改善するという観点では、必ずログ(=どうやってそのプログラムが動いているかを文字列で教えてくれるもの)を確認する必要が出てきます。

自分は、実務に入ってから、より一層その重要性を感じました。

想定読者

自分もまだまだこれからですが、今回の記事は

  • rails初学者
  • railsでログを追加で出力させる方法を知りたい
  • 実務未経験・実務経験浅め

方向けの記事となっております。

内容としては

  • railsにおける基本的なログの見方から
  • 自分でログを出力する記述をする

ところまで理解していただける内容になっていますので
よかったら参考にしてみてください。

実行環境

rails 6.0.3.4

ruby 2.6.5

ログを確認する方法

ローカル環境でログを確認する方法は、大きく分けて二つあります。

  • ターミナル(windowsだとコマンドプロンプト)
  • logディレクトリにある開発環境(開発・テスト・本番)毎のログファイル

それぞれ確認していきましょう。

まずは、立ち上げるアプリのディレクトリに移動し、ターミナルで、rails sコマンドを実行してください(Dockerなどのミドルウェアを利用されている方は、その手順に従ってサーバーを起動してください)。

rails s

起動を確認できたら、実際にログを見ていきます。

ターミナル(コマンドプロンプト)

さて、ではlocalhost:3000に入ってみましょう。

そうすると、以下のようにログがブワーって表示されると思います。

(僕もそうですが)慣れない内は、本当に読む気が失せます。

しかし、個人的に、ログをを見る必要があるタイミングは、主に以下の2つの時かなと思います。

  • データの流れ・動きを確認したい時
  • エラーが出た時

もっと具体的にいうと、SQL文が発動するタイミングや、例外が発生したタイミングです。

なぜなら、データの流れによってその後の処理を考えたり、エラーの原因を見つける手がかりになるからです。

log/開発環境.logでログを確認する

また、ログを見る方法は前述した通り、もう一つあります。

それが、logディレクトリにある開発環境毎に用意されているファイルです。

現在は開発環境でサーバーを立ち上げています。

なので、log/development.logを選択します。(ちなみに、テスト環境であれば、test.logにログが出力されているはずです。)

ここまでで、二通りのログの確認方法を説明しました。

ここからは、ログを自分で出力させるためのソースコード内の記述についてお話ししていきます。

元々出力されるログに加えて、指定のログを出力する方法

今回例として出すのは、変数の中身を確認する方法です。

def index
  @articles = Article.published.order(created_at: :desc).includes(:user) 
  logger.debug(@articles.inspect)
end

このように、indexアクション内で一覧表示させる投稿データを、@articlesに代入します。

この変数の中身をログに出力させるときに、logger.debugを利用します。

こうすると、以下のように、ログでこの変数の中身が表示されるようになります。

7行目以下が、@articlesの中身を表示しています。内容は荒れ狂っていますがご了承ください。

このようにして、自分でログに表示する内容を追加することができます。

ログのレベルを変更する

なお、logger.debugのdebugの部分は、出力させたいレベルに応じて変更可能です。

ログレベル(数字)ログレベル意味
5unknown原因不明のエラー
4fatalエラーハンドリング不可能な致命的エラー
3errorエラーハンドリング可能なエラー
2warn警告
1info通知
0debug開発者向けデバッグ用詳細情報
参考:「現場で使える ruby on rails 5速習実践ガイド」

となっています。
debugは開発者用にデバッグ用の詳細情報を表示するために利用されるようですね。

(補足)

僕もdebug以外を利用したことはありませんが、仕様としては、指定したレベル以上のログを出力するようになっているようなので、ひとまずdebugを指定していれば問題ないのかなと。

また、debugレベルの情報であればbyebugやbinding.pryで確認することもできます。

まとめ

  • Railsのログは、ターミナル(windowsであればコマンドプロンプト)or logディレクトリにある開発環境.logファイルで確認できる。
  • 追加でログを出力させたい時は、logger.debug(確認したい値.inspect)を利用する
  • debugの部分は、レベルに応じて変更することができる。

 
このように、週に1回~2回、Ruby, Ruby on Railsを中心に技術ブログを更新しています。

もし参考になったなと思ったら、ブックマークをお願い致します。

最後まで読んでいただき、ありがとうございました!

それでは。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA