关闭生产环境中的Active Record日志记录

10

如何在生产环境下关闭Active Record的详细日志记录?(例如,每个SQL语句都被记录)

我的日志记录正在快速填满,因为我有后台任务运行大量查询。虽然在开发服务器上这很好,但在生产环境中不需要记录这些。


我并不是说我不同意你,但是我喜欢保留SQL日志,并通过轮转来解决日志文件大小问题。你有这样的设置吗?如果没有,你们在生产环境中使用的操作系统是什么? - steakchaser
2
我的问题是我在Heroku上使用Papertrail,如果我不控制日志大小,几分钟内就会用完数据传输量。我只是不需要为这个特定的后台作业记录日志。因此,如果有一种“暂时”关闭它的方法,那也可以。 - Nick Barrett
1个回答

22

要完全关闭,只需将以下内容添加到您的环境文件中(即 production.rb):

```ruby config.active_record.verbose_query_logs = false ```
config.active_record.logger = nil

请看AR指南(3.6节):

config.active_record.logger可以接受符合Log4r或默认的Ruby Logger类接口的日志记录器,然后将其传递给任何新的数据库连接。您可以通过在Active Record模型类或实例上调用logger来检索此记录器。将其设置为nil以禁用日志记录。

还有更多选项(如选择性开启/关闭)在其他文章中有记录。 请参见在控制台中禁用Rails SQL日志记录


3
谢谢。我最终在我不想记录的特定作业中放置了ActiveRecord::Base.logger = nil。 - Nick Barrett
1
如果这样做,您还将在模型中失去logger对象... 您必须更改模型中的所有logger.info调用为Rails.logger.info等。 - kino1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接