Ruby记录器丢失了格式

时间:2011-02-12 13:21:30

标签: ruby logging

我有一个ruby控制台应用程序。当我在我的开发机器上用irb检查它时,它会正常记录。但是当我在VM中运行它时,ruby logger会丢失格式化,即它只记录消息,没有日期和严重性。现在,通过使用Logger.formatter = proc { |severity, datetime, progname, msg| ...}设置格式来解决此问题。但我很好奇为什么会发生这种情况?我用谷歌搜索并找到了相当古老的信息,这可能发生在Rails应用程序中。这是一个已知的问题?我花了一些时间来调试它。

2 个答案:

答案 0 :(得分:2)

您是require在不同环境中使用不同的宝石,还是设置日志格式的IRB本身?如果您向应用程序添加require 'irb'会发生什么情况,是否也会更改格式?

格式化存储在全局变量中,任何gem都可以覆盖它。当我require一个宝石反过来require d ActiveRecord,它设置了日志格式时,我被一个类似的问题所困扰。

它只是显示了使用全局变量进行配置有多糟糕,这在Ruby gems中太常见了。

答案 1 :(得分:1)

在Rails 3中的FYI,这已经改变了,它不再是一个Class方法,而是一个实例方法。 因此,它不会在所有实例和宝石之间共享,不应再干扰您的登录首选项。

这意味着Rails 3需要此代码才能更改仅记录器实例的格式:

log = Logger.new('file.log')
log.formatter = proc { |severity, datetime, progname, msg| ...}