在生产环境中改变日志级别吗?

你好!

我目前正在尝试调试一些仅在以生产模式运行的环境中出现的慢查询。我注意到日志级别似乎在生产模式下是硬编码的(代码引用),无法直接配置。我想将此日志级别更改为 debug(至少暂时如此),以便可以看到更多信息;有什么方法可以实现这一点吗?

我尝试了一些相当粗糙的解决方法,包括在运行时使用 Rails 控制台更改日志级别,但没有一种方法能让数据库查询显示在 debug 日志中(尽管我在 Rails 控制台中手动执行 Rails.logger.debug,这些日志在这些解决方法之后确实显示出来了)。

谢谢!

附注:为了缓解你对我在生产环境中遇到的仅发生在此类环境中的问题的任何潜在担忧,我正在以一种涉及大量分类的非标准方式使用 Discourse;我遇到的问题可能不会被其他 Discourse 实例遇到。:slight_smile:

3 个赞

这最近一直让我很困惑。

image

我已经确认我的日志级别是 info,但无论怎么尝试:

Rails.logger.info "blah blah blah"

都没有显示出来,而 /errors 仍然固执地显示 warn - 我错过了什么?

有人有解决办法吗?

这太令人沮丧了

image

……但我却在 /logs 中看不到 Info 级别的日志!

切换“info”无效:

不确定我们如何在没有这个的情况下诊断某些仅在生产环境中出现的问题…… :sweat_smile:

是什么阻止了 info 级别的日志?

我尝试过的其他方法:

  • 我检查了 production.log,我想要的日志信息 就在那里
  • 我在 rails 控制台上查看了 Logster.config 的输出,但它并没有明显有用。
  • 同理 /vendor/bundle/ruby/3.2.0/gems/logster-2.19.1/lib/logster/configuration.rb

所以我仍然不明白为什么 info 级别的日志没有显示在 /logs 中。

显然,在 production.log 和 Logster 之间有什么东西在过滤掉 info 级别的日志。

2 个赞

如果我理解正确的话,它在生产模式下按设计会抑制信息和调试日志。Blaming logster/lib/logster/rails/railtie.rb at main · discourse/logster · GitHub

store.level = Logger::Severity::WARN if Rails.env.production?

来自一篇博文

在生产模式下,它通过指纹识别回溯来聚合类似的错误,监听警告/错误和致命消息。目的是显示一个可以解决的开放式应用程序问题列表。

在开发模式下,它提供了 Rails 生成的所有日志的完整信息流。(调试及以上)。这比控制台有显著优势,因为您可以正确访问每行日志的回溯。

2 个赞

谢谢。

对于主流情况来说,这很有道理。

但是,这似乎过于严格,应该可以为特殊情况进行配置?

这包括您在生产环境中希望调查的边缘情况。

1 个赞