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アプリを開発したい方はご参加ください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する