6

我已将 Resque 添加到我的 Rails 3 项目中。我创建了一个从/向数据库读取/写入一些东西的工作。

问题是我不再在终端中看到 SQL 查询日志,例如“Post Load (0.5ms) SELECT "posts".* FROM "posts""。我也没有看到我设置的任何 Rails.logger 消息。

当我发出另一个请求(简单刷新)时,记录器消息和 SQL 查询日志突然出现。

任何想法可能会发生什么?谢谢

4

3 回答 3

4

Rails 不会立即写入日志文件,它会在刷新文件之前等待一定数量的行。您可以通过将其添加到您的development.rborapplication.rb文件来告诉 Rails 始终刷新日志...

config.logger.auto_flushing = true

只在开发中这样做,永远不要在生产中设置它,因为它只会杀死你的 I/O。

您也可以根据需要使用...

Rails.logger.flush

API 文档在这里...

http://api.rubyonrails.org/classes/ActiveSupport/BufferedLogger.html#method-i-auto_flushing-3D

于 2011-06-28T15:11:41.660 回答
2

我们在其中一个项目中遇到了同样的问题。此外,我们也希望将所有 Resque 消息记录到单独的日志文件中。

在博客文章启用 resque workers 的即时日志消息中,可以找到一个代码示例来启用即时日志记录到单独的文件。

于 2013-07-01T13:59:24.013 回答
0

Resque 不会在生产模式下刷新日志(除非您的工作生成超过 1000 行日志)。

您必须为生成的每一行日志刷新。我只会使用文件 lib/tasks/resque.rake 配置 resque :

task "resque:setup" => :environment do
  Resque.before_first_fork = Proc.new { Rails.logger.auto_flushing = 1 }
end
于 2011-08-05T14:09:52.170 回答