ログを出力しよう!Ruby on Railsのloggerの使い方【初心者向け】

Ruby on Railsでログを出力できる【logger】の使い方を初心者向けに解説した記事。コントローラー、モデル、ビューなどからログを出力することが可能。デバッグやアプリケーションの保守・運用で良く使われます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

Railsで使うloggerの使い方について解説しています。

開発する中でエラーが起きてしまった場合ログを見ると、どこでエラーが起きたのか確認することができます。Railsでは、ログを出力する際loggerを使っていきます。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

20163020-2

 

今回はloggerの使い方を勉強してみよう。

 

20160620

 

田島メンター!!loggerは何をするんですか〜?

 

20163020-2

 

loggerはログを出力するときに使うんだ。エラーが出たときなどに、どこで間違っているかというのを確認することができるよ。

 

20160620

 

なるほど、必要そうですね。お願いします!

 

loggerとは

loggerを使うことでrailsのコントローラー、モデル、ビューなどからログを出力することができます。

開発中のデバッグやアプリケーションの保守・運用で良く使われる機能です。
使い方は簡単で、ログを出力したい場所に次のように記述するだけです。

logger.debug(“ログに出力したい内容")

ログレベル

railsではログレベルを設定することで、loggerから出力する内容を制限することができます。
railsには次の5つのログレベルがあります。

fatal 致命的なエラー
error エラー
warn 警告
info 一般的な情報(通知)
debug デバック情報

ログレベルを設定するには、「config/development.rb」、「config/test.rb」、「config/production.rb」内に次のように記載します。

config.log_level = :warn

設定したログレベルより低い(fatal > error > warn > info > debug)ログは出力されなくなります。

例えば、ログレベルをwarnに設定した場合infoとdebugはログに出力されなくなります。

ログレベルの各環境のデフォルト値は次の通りです。

development debug
test debug
production info

20163020-2

 

5つのログレベルの内容と、出力されるレベルの設定方法だよ。

 

20160620

 

ログレベルは上に行くほど深刻って感じですね。

 

20163020-2

 

次は実際に、どのようにloggerを設定するかという手順を見てみよう。

 

実際にloggerを書いてみよう

まず、サンプルアプリケーションをscaffoldで作成します。
以下のコマンドを実行してください。
$ rails new sample_app
$ cd sample_app
$ rails generate scaffold User name:string
$ rake db:migrate
サンプルアプリケーションが完成したら、「app/controllers/users_controller.rb」にログを出力するコードを書いていきます。
develop環境のデフォルトのログレベルはdebugなので、先ほど紹介した5つのメソッド全て使うことができます。
indexアクションに次のコードを追加します。
logger.debug("[debug] users#index")
logger.info("[info] users#index")
logger.warn("[warn] users#index")
logger.error("[error] users#index")
logger.fatal("[fatal] users#index")
次のコマンドでrailsアプリケーションを起動して「http://localhost:3000/users/」にアクセスしてみます。
rails_logger_sample-620x218
ターミナルを見てみると次にように5つすべてのログが出力されているのが確認できます。
以上、loggerの説明でした。

20163020-2

 

loggerを使う一連の流れを紹介したよ。

 

20160620

 

コントローラーに追記して、実行したときにコンソールを見ればいいんですね。

 

20163020-2

 

情報をログに保存することによってデバッグを行いやすくなるので、ぜひこれも覚えておこう。

 

20160620

 

分かりました。ありがとうございました!

 

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。