在生产服务器

时间:2016-06-14 17:40:27

标签: ruby-on-rails ruby ruby-on-rails-4 logging

关于管理日志级别的信息很少,我决定问这个问题来得到你的意见。

这个问题背后的动机是找出在不重新启动应用服务器的情况下在生产中设置日志级别的最佳方式。

我可以考虑的第一件事是在application_controller中放置一个方法,它将检查某个url参数是否存在,即log_level=debug,如果在请求的生命周期中存在,则转换该日志记录级别。

这有一个缺点,即您的用户或您必须修改网址以打开日志记录。另一个可能是你所做的任何底层调用,即通过javascript调用你api也需要知道这个变化并传递这个log_level url param。

我能想到的另一件事是将文件放到名为debug_log_level的Rails根目录或类似的东西,然后在每个请求开始检查该文件是否存在。如果是这样,检查是实际包含有效日志记录级别的文件名,以及何时打开该日志记录级别。

这个的缺点是你可能在不同的盒子上有几个实例,所以你需要在每个盒子上进行这个改变。

另一种可能是对数据库进行调用,对文件也是如此。

或者,您可以为日志级别设置环境变量,并使用它来设置日志级别,但这需要重新启动应用服务器。

您是如何在生产环境中管理的?现在必须有一种更聪明的方法来做到这一点,是吗?

1 个答案:

答案 0 :(得分:1)

根据documentation,您可以使用以下内容在环境初始值设定项中设置日志级别(例如在config/environments/production.rb中):

config.log_level = :warn

而不是:warn,而是指定所需的日志级别。

  

可用的日志级别为:: debug,:info,:warn,:error,:fatal和:unknown,分别对应于从0到5的日志级别数。

如果需要在运行时指定日志级别,可以使用

Rails.logger.level = 0