Help us understand the problem. What is going on with this article?

Railsでlogを出力しdebugする

More than 3 years have passed since last update.

RailsのControllerでlogを出力する

開発をしていると、適切な場所に処理が通っているのか
変数の中身がなんなのか
など確認したいことが色々出てきます。

そうなった場合にRailsでは、logger.debugを使用して確認できます。

logger.debugを使用するとlog/development.logにlogを出力できます。

環境

RubyonRails: 5.0.3
Ruby: 2.3.3

使い方

使い方は、logger.debugと記述し出力したいログを書くだけなので
とっても簡単です。

Controllerで使ってみる

以下は、Controller内のif文の中にlogを仕込む例です。

logger.debugの使い方の例:1
def index
  if true then
     logger.debug("if文の中に入りました")
  end
end
log/development.logに出力されたlog
if文の中に入りました

Viewで使ってみる

logger.debugはViewに仕込むことも可能です。
以下は、View内にlogを仕込む例です。

logger.debugの使い方の例:2
<% logger.debug("このページは読み込まれています") %>
log/development.logに出力されたlog
このページは読み込まれています

インスタンス変数を出力してみる

logger.debugで出力できるものは、文字だけではありません。
@testのようなインスタンス変数も出力できます。
以下は、インスタンス変数の中身を出力する例です。

logger.debugの使い方の例:3
@test = Test.all
logger.debug(@test)
log/development.logに出力されたlog
<Test::ActiveRecord_Relation:0x007f16ec445390>

inspectをつけたら
わかりやすく中身を表示することが可能です。
個人的には、inspectを付けて使うことが多いです。

logger.debugの使い方の例:4
@test = Test.all
logger.debug(@test.inspect)
log/development.logに出力されたlog
#<ActiveRecord::Relation [#<Test id: 1, name: "hoge">, #<Test id: 2, name: "fuga">]>

以上です。

Kashiwara
nimとtsが好きです よろしくお願いします
sportsfield
人材支援会社、株式会社スポーツフィールドのIT・WEB開発部門
https://www.sports-f.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away