Ruby on rails 日志不';t与导轨5平齐

Ruby on rails 日志不';t与导轨5平齐,ruby-on-rails,heroku,logging,ruby-on-rails-5,Ruby On Rails,Heroku,Logging,Ruby On Rails 5,我们有一个在Heroku上运行的Rails 5应用程序。当我们尝试使用heroku run:detached运行进程时,直到进程退出,日志才会出现。例如: $ heroku run:detached 'rails runner "Rails.logger.info 1;(1..500000000).each{};"' Running rails runner "Rails.logger.info 1;(1..500000000).each{};" on ⬢ <REDACTED>...

我们有一个在Heroku上运行的Rails 5应用程序。当我们尝试使用
heroku run:detached
运行进程时,直到进程退出,日志才会出现。例如:

$ heroku run:detached 'rails runner "Rails.logger.info 1;(1..500000000).each{};"'
Running rails runner "Rails.logger.info 1;(1..500000000).each{};" on ⬢ <REDACTED>... done, run.7268 (Standard-1X)
Run heroku logs --app <REDACTED> --dyno run.7268 to view the output.
$ heroku logs --dyno run.7268 -t
2019-10-24T13:49:29.846280+00:00 heroku[run.7268]: Starting process with command `rails runner "Rails.logger.info 1;(1..500000000).each{};"`
2019-10-24T13:49:30.582293+00:00 heroku[run.7268]: State changed from starting to up
2019-10-24T13:50:01.002636+00:00 heroku[run.7268]: State changed from up to complete
2019-10-24T13:50:00.982354+00:00 heroku[run.7268]: Process exited with status 0
2019-10-24T13:50:00.930084+00:00 app[run.7268]: I, [2019-10-24T13:49:35.871352 #4]  INFO -- : 1
$heroku run:disconnected'rails runner“rails.logger.info 1;(1..500000000)。每个{};“'
运行rails runner“rails.logger.info 1;(1..500000000)。每个{};”上⬢ ... 完成,运行0.7268(标准-1X)
运行heroku logs--app--dyno Run.7268以查看输出。
$heroku日志--dyno run.7268-t
2019-10-24T13:49:29.846280+00:00Heroku[run.7268]:使用命令“rails runner”rails.logger.info 1;(1..500000000)启动进程`
2019-10-24T13:49:30.582293+00:00 heroku[run.7268]:状态从启动更改为启动
2019-10-24T13:50:01.002636+00:00 heroku[run.7268]:状态从“up”更改为“complete”
2019-10-24T13:50:00.982354+00:00 heroku[run.7268]:进程退出,状态为0
2019-10-24T13:50:00.930084+00:00应用程序[运行7268]:I[2019-10-24T13:49:35.871352#4]信息--:1

在进程退出之前,日志不会显示。您可以看到最后一行的Rails时间戳是
13:49:35
,而日志时间戳是
13:50:00
。我们在Rails 6应用程序中看到了相同的行为,但在Rails 4应用程序中没有看到。我们发现这是因为Rails logger在生产模式下启用了缓冲。您可以使用
production.rb
文件中的
STDOUT.sync=true
禁用它