✍️
【Rails】Rakeタスクでログを標準出力に出力する方法
はじめに
この記事では、RailsのRakeタスク内でクエリのログを標準出力に出力する方法について解説します。これにより、Rakeタスクの実行中に発行されるクエリをリアルタイムで確認することができます。
サンプルコード
namespace :query_log do
desc "Output query logs to stdout"
task output: :environment do
# 以下を追加する
ActiveRecord::Base.logger = Logger.new($stdout)
Rails.logger.level = Logger::DEBUG
# Rakeタスクの実行内容を記述します
# ...
# クエリログの設定を元に戻す(なくてもOK)
ActiveRecord::Base.logger = nil
Rails.logger.level = Logger::INFO
end
end
コードの解説
ActiveRecord::Base.logger = Logger.new($stdout)
Active Recordのクエリログを標準出力に出力するための設定です。これにより、ActiveRecordのログが標準出力に出力されます。
ActiveRecord::Base.logger
は、Active Recordモデルで実行されるクエリやデータベース操作に関する情報を記録するためのロガーを表します。Logger.new($stdout)
は、新しいロガーオブジェクトを作成し、その出力先を標準出力($stdout)に設定しています。
Rails.logger.level = Logger::DEBUG
RailsのログレベルをDEBUGに設定します。
まとめ
この記事では、RailsのRakeタスク内でクエリのログを標準出力に出力し、リアルタイムでクエリの実行状況を確認する方法について紹介しました。クエリログを出力することにより、実行内容を把握し、デバッグしやすくなります。提供されたコードを使用して、自身のRailsプロジェクトでクエリログを活用してみてください!
参考
Discussion