Ruby on rails 在rake任务中使用rails logger,rails 5
我正在使用rails 5构建一个RubyonRails应用程序,我有许多rake任务,我想从中记录信息。然而,当我试图访问记录器时,我得到一个错误:未定义的局部变量或方法“logger” 我在lib/tasks中有我的rake任务,并且我在production.rb和development.rb中声明了一个记录器 下面是一个示例任务: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
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中的一个错误