Ruby on rails 为什么Rails.logger会在开发和测试中写入相同的日志文件?

Ruby on rails 为什么Rails.logger会在开发和测试中写入相同的日志文件?,ruby-on-rails,ruby,logging,Ruby On Rails,Ruby,Logging,我有以下模型测试: describe 'Checking for errors' do it 'should check for any jobs that have errors and log them' do logger = Logger.new('log/go_job_errors_test.log') code_location = create(:code_location_with_best_code_set) code_locat

我有以下模型测试:

  describe 'Checking for errors' do
    it 'should check for any jobs that have errors and log them' do
      logger = Logger.new('log/go_job_errors_test.log')
      code_location = create(:code_location_with_best_code_set)
      code_location.jobs << create(:complete_job, status: 3, exception: 'I failed to complete')
      CodeLocationJobFeeder.create(code_location_id: code_location.id, url: code_location.repository.url, status: 2)
      CodeLocationJobFeeder.check_for_errors(1)
      logger.expects(:info).with("I failed to complete")
    end
测试的要点是,当我执行
CodeLocationJobFeeder.check\u for\u errors
时,我将有一个单独的日志文件,它将告诉我有关某些错误的所有信息。这在开发中运行良好,我得到了我想要的文件。但是,当我运行测试时,我会在
log/go\u job\u errors\u test.log
log/go\u job\u errors.log
中获得以下输出:

log/go_job_errors.log

[2017-06-28T18:23:46.164141 #29604]  INFO -- : Job 40 with code location: 93 failed. Exception: I failed to complete
这是我想要的内容,但在错误的文件中。这是第二个文件:

 log/go_job_error_test.log

 # Logfile created on 2017-06-28 18:40:59 +0000 by logger.rb/47272
包含错误内容的正确文件

我一直在尝试应用这个s.o.答案,但似乎效果不太好。有人能指出我做错了什么吗?

模型中的这一行“Logger.new('log/go\u job\u errors.log')”指示将模型错误记录到文件“log/go\u job\u errors.log”中。无论环境如何,模型错误总是记录在“log/go\u job\u errors.log”中


在测试中,从这一行“Logger.new('log/go\u job\u errors\u test.log')开始,这一行创建一个新的日志文件。当您的测试调用模型时,模型调用“log\u error(code\u location)”,但该方法只记录到“log/go\u job\u errors.log”。

因为您在测试中创建的记录器被忽略。没有人用它。模型写入自己的记录器。
 log/go_job_error_test.log

 # Logfile created on 2017-06-28 18:40:59 +0000 by logger.rb/47272