1. ホーム
  2. ruby-on-rails

[解決済み] Rails.loggerをrspecの実行時にコンソール/stdoutに出力させるには?

2023-03-21 05:49:31

質問

タイトルと同じ Rails.logger をコンソール/stdout に出力するには?例えば

Rails.logger.info "I WANT this to go to console/stdout when rspec is running"
puts "Like how the puts function works"

やはり Rails.logger に移動します。 log/test.log にもなります。

どのように解決するのですか?

Rails 4については この回答を参照してください。

Rails 3.xの場合、ロガーを設定するのは config/environments/test.rb :

config.logger = Logger.new(STDOUT)
config.logger.level = Logger::ERROR

これは、STDOUTにテスト中に記録されたすべてのエラーをインターリーブします。STDERRに出力をルーティングするか、代わりに別のログレベルを使用することを望むかもしれません。

これらのメッセージをコンソールとログファイルの両方に送るには、Ruby の組み込みの ロガー クラスが必要です。そのため ロギング gem はあなたが望むことをやってくれます。これをあなたの Gemfile に追加し、2つのアペンダーを config/environments/test.rb :

logger = Logging.logger['test']
logger.add_appenders(
    Logging.appenders.stdout,
    Logging.appenders.file('example.log')
)
logger.level = :info
config.logger = logger