我在rails应用程序上使用rails 5构建了一个ruby,我有许多rake任务,我想从中记录信息。但是,当我尝试访问记录器时,出现错误:未定义的局部变量或方法`logger'
我在lib / tasks中执行了rake任务,并且我已经在production.rb和developement.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
摘自develop.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)
答案 0 :(得分:4)
尝试添加环境,这将具有加载rails应用程序的效果。
task :scrape_info => :environment do
...
end