オーダーメイドコース
icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

RubyのフレームワークRailsで使うloggerの使い方について解説しています。

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

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

次は実際に、どのように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の説明でした。

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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