【问题标题】:Rails: Reason log config shows difference between console and logfile?Rails:原因日志配置显示控制台和日志文件之间的区别?
【发布时间】:2025-12-09 12:30:01
【问题描述】:

我有一个 Rails 3 应用程序。 当我发出类似的命令时,使用默认的日志记录配置

logger.warn "some message"

记录器消息出现在控制台和日志中。

现在我在 production.rb 中添加一行

config.logger = Logger.new(Rails.root.join("log","biteme.log"))

记录器消息不会出现在控制台中,只有日志。 然后我把它改成这样:

config.logger = Logger.new(config.paths.log.first)

现在消息出现在控制台和日志中。这里有一些我缺少的知识,因为为什么第一个配置省略了进入控制台的日志消息是没有意义的。有什么想法吗?

【问题讨论】:

  • 第一个对象是字符串,第二个对象是路径,我猜记录器的行为是有条件的

标签: ruby-on-rails logging console


【解决方案1】:

Rails 现在实际上使用 ActiveSupport::BufferedLogger 而不是 ruby​​ 的标准 Logger 类。

尝试制作该类的自定义记录器,看看它是否有效:

config.logger = ActiveSupport::BufferedLogger.new(Rails.root.join("log","biteme.log"))

【讨论】:

  • 我现在已经使用了它,因为它似乎是 Rails 的标准方式。
【解决方案2】:

终于找到了问题的根源。我使用的是与 Heroku 中的日志冲突的 jasonp gem。在本地,(当然)没有问题,但是从 Heroku 运行,日志消息没有出现。当我删除该 gem 时,Heroku 上会出现日志消息。 现在我是一个快乐的露营者。

【讨论】: