Ruby on rails 在rake任务中使用rails logger,rails 5

Ruby on rails 在rake任务中使用rails logger,rails 5,ruby-on-rails,ruby,logging,rake-task,Ruby On Rails,Ruby,Logging,Rake Task,我正在使用rails 5构建一个RubyonRails应用程序,我有许多rake任务,我想从中记录信息。然而,当我试图访问记录器时,我得到一个错误:未定义的局部变量或方法“logger” 我在lib/tasks中有我的rake任务,并且我在production.rb和development.rb中声明了一个记录器 下面是一个示例任务: namespace :some_namespace do desc "a description" task :scrape_info do

我正在使用rails 5构建一个RubyonRails应用程序,我有许多rake任务,我想从中记录信息。然而,当我试图访问记录器时,我得到一个错误:未定义的局部变量或方法“logger”

我在lib/tasks中有我的rake任务,并且我在production.rb和development.rb中声明了一个记录器

下面是一个示例任务:

namespace :some_namespace do
    desc "a description"
    task :scrape_info do
        include Scraper
        startTime = Time.now
        Rails.logger.tagged("Scraper") { Rails.logger.info "Beginning scrape: #{startTime} " }
        Scraper.scrape_info
        endTime = Time.now
        Rails.logger.tagged("Scraper") { Rails.logger.info "Finished scrape: #{endTime} " }
    end
end
以及development.rb中的一段摘录,其中我定义了记录器:

 config.logger = Logger.new(STDOUT)
 config.log_level = :info
 config.logger = ActiveSupport::TaggedLogging.new(logger)
知道如何将记录器合并到rake任务中吗?我知道我可以简单地使用puts语句打印到stdout,但最终我希望有每日日志文件,并且我希望我的rake任务包含在这些文件中

回答: 只需添加@Joel_Blum答案中给出的环境标签。另外,在development.rb中,行

config.logger = ActiveSupport::TaggedLogging.new(logger)
需要:

config.logger = ActiveSupport::TaggedLogging.new(config.logger)

尝试添加环境,这将产生加载rails应用程序的效果

 task :scrape_info => :environment do
  ...
 end

可能的重复我看到了,并认为我的问题是不同的,因为我本来已经添加了环境。然而,实际的问题是开发中的一个简单的输入错误。无论如何,谢谢你!谢谢这很有帮助——我添加了环境部分,但仍然出现了相同的错误——我发现了错误的真正来源,那就是development.rb中的一个错误