Ruby on rails 查看Rake任务中的日志(生产)
我希望在生产中运行这个rake任务(到staging应用程序)时,能够找到一个将日志发送到终端的答案 我创建了一个rake任务来更新数据库中的现有记录。我首先在本地进行了尝试,它运行得很快,得到了我想要的结果。在当地,我有 4295曲目。现在我尝试在我的staging DB上运行它,它有17418个轨道 我运行heroku运行rake db:track_rank-a staging appname,得到以下结果:Ruby on rails 查看Rake任务中的日志(生产),ruby-on-rails,logging,heroku,rake,Ruby On Rails,Logging,Heroku,Rake,我希望在生产中运行这个rake任务(到staging应用程序)时,能够找到一个将日志发送到终端的答案 我创建了一个rake任务来更新数据库中的现有记录。我首先在本地进行了尝试,它运行得很快,得到了我想要的结果。在当地,我有 4295曲目。现在我尝试在我的staging DB上运行它,它有17418个轨道 我运行heroku运行rake db:track_rank-a staging appname,得到以下结果: Running `rake db:track_rank` attached to
Running `rake db:track_rank` attached to terminal... up, run.8608
Connecting to database specified by DATABASE_URL
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Starting the New Relic agent in "production" environment.
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : To prevent agent startup add a NEWRELIC_AGENT_ENABLED=false environment variable or modify the "production" section of your newrelic.yml.
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Reading configuration from config/newrelic.yml
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Environment: production
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : No known dispatcher detected.
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Application: Marmoset Music
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : delayed_job not available: No DJ worker present
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Sinatra instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Dalli Memcache instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Net instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing deferred Rack instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Rack::Builder middleware instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Rails 3+ middleware instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing ActiveRecord instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing legacy Excon instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing DelayedJob instrumentation [part 1/2]
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Rails 3 Controller instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Rails 3.1/3.2 view instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Installing Rails3 Error instrumentation
** [NewRelic][03/11/15 18:04:40 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Finished instrumentation
** [NewRelic][03/11/15 18:04:41 +0000 49202e1b-0783-4094-bf1a-969e03b61bab (3)] INFO : Reporting to: https://rpm.newrelic.com/accounts/375675/applications/2431422
Updating track's rank points in group #1
Dalli/SASL authenticating as 021dd5
Dalli/SASL: 021dd5
它已经在那里呆了大约12分钟,所以我不确定它是否真的对“第一组”有什么作用
如何将一些日志发送到终端以查看发生了什么
这是我的任务:
desc "Updates all exisiting tracks rank"
namespace :db do
task :track_rank => :environment do
batch_index = 1
puts "Updating track's rank points in group ##{batch_index}"
three_weeks_ago = 21.days.ago.to_date
Track.find_in_batches do |group|
group.each do |track|
listens = track.listens_count
downloads = track.downloads_count
purchases = track.purchases_count
staff_pick = 0
new_track = 0
if track.staff_pick?
staff_pick += 1
end
if track.created_at.to_date > three_weeks_ago
new_track += 2000
end
downloads *= 60
purchases *= 150
staff_pick *= 1000
rank_total = listens + downloads + purchases + staff_pick + new_track
if rank_total > 0
track.increment!(:rank, by = rank_total)
end
end
batch_index +=1
end
puts "Tracks updated!"
end
end
最简单的方法是让Rails明确地记录rake任务的进度和/或结果。只要改变这个:
puts "Tracks updated!"
对此
Rails.logger.ingo "Tracks updated!"
您还可以在中间添加一些调试日志,但这取决于您。
运行<代码> HeloCu日志
您也可以过滤日志,查看一下日志。看起来Heroku在记录rake任务方面有问题。为了避免这种情况,您需要在分离模式下运行rake任务
heroku run:detached rake db:track_rank
来源:Rails.logger并没有将我可以看到的rake任务中的任何内容放入Heroku日志中。你得到的只是“开始…停止”。中间的所有内容都丢失了,您煞费苦心地告诉任务输出以进行故障排除。@JosephK这可能是因为rake任务没有时间从缓冲区中清除内容。您需要手动刷新它们。