ActiveRecordのロガーを使用してデバッグ情報を取得する方法


  1. ログレベルの設定: ロガーのログレベルを設定することで、出力されるログの詳細度を制御することができます。デフォルトでは、開発環境では"debug"レベル、本番環境では"info"レベルが使用されます。必要に応じて、config.log_levelでログレベルを変更することができます。

  2. ログフォーマットのカスタマイズ: デフォルトのログフォーマットは、タイムスタンプとメッセージのみですが、必要に応じてカスタマイズすることができます。config.log_formatterを使用して、自分の好みに合ったログフォーマットを定義することができます。

以下に、上記の方法のコード例を示します。

  1. ログレベルの設定:

    # config/environments/development.rb
    Rails.application.configure do
    # ...
    config.log_level = :debug
    # ...
    end
  2. クエリのログ出力:

    # config/environments/production.rb
    Rails.application.configure do
    # ...
    config.active_record.logger = Logger.new(STDOUT)
    # ...
    end
  3. ログフォーマットのカスタマイズ:

    # config/application.rb
    class MyFormatter < ActiveSupport::Logger::Formatter
    def call(severity, timestamp, progname, msg)
    "#{timestamp.to_formatted_s(:db)} #{severity} #{msg}\n"
    end
    end
    Rails.application.configure do
    # ...
    config.log_formatter = MyFormatter.new
    # ...
    end