1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】ロガー

Posted at

はじめに

ログの出力や設定などについて調べた内容をまとめます。

ログレベル

ログレベル 内容
0 :debug デバッグ用の情報など
1 :info 通知
2 :warn    警告 
3 :error 制御可能なエラー
4 :fatal 制御不可能なエラー
5 :unknown 不明なエラー

出力するログレベルを設定

  • 環境ごとに個別に設定する
  • デフォルトでは、development環境とtest環境が :debug、production環境は :info に設定されている 
  • production環境は不要なログを出力しないように注意する
config/environments/development.rb
config.log_level = :debug
# もしくは Rails.logger.level = 0
config/environments/production.rb
config.log_level = :info
# もしくは Rails.logger.level = 1

ログを書き込む

  • 設定方法
logger.debug "hoge"
# logger.(debug|info|warn|error|fatal) "[書き込むメッセージ]"
  • 設定例
  class ArticlesController < ApplicationController
  # ...

  def create
    @article = Article.new(article_params)
    logger.debug "新しい記事: #{@article.attributes.inspect}"
    logger.debug "記事が正しいかどうか: #{@article.valid?}"

    if @article.save
      logger.debug "記事は正常に保存され、ユーザーをリダイレクト中..."
      redirect_to @article, notice: '記事は正常に作成されました。'
    else
      render :new
    end
  end

  # ...

  private
    def article_params
      params.expect(article: [:title, :body, :published])
    end
end

パフォーマンスに与える影響に注意する

  • :debug は多くの文字列を評価するため、パフォーマンスへの影響が大きい
  • ロガーメソッドに渡すものはブロック形式にする
    • ブロックの評価は遅延評価される
logger.debug { "Person attributes hash: #{@person.attributes.inspect}" }

おわりに

ログのクリア(rake:log clear)も定期的に行うようにしたいと思います。Railsガイドに記載のあるdebug gemも使いやすそうなので、今度試してみたいと思います。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?