如何在我的gem中写入Rails记录器

时间:2012-01-01 12:48:07

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个我写的宝石,我在我的rails应用程序中使用它。

我想从我的gem写入rails logger,但显然那里没有标准的rails logger。

实现我想要做的事的正确方法是什么?

2 个答案:

答案 0 :(得分:15)

正如Frederick Cheung所说,你应该为你的宝石使用命名空间记录器:MyGem.logger

然后将其设置为Railtie中的Rails记录器,以便您的gem在Rails的内部和外部都能很好地工作。

module MyGem
  class Railties < ::Rails::Railtie
    initializer 'Rails logger' do
      MyGem.logger = Rails.logger
    end
  end
end

答案 1 :(得分:8)

虽然您应该能够使用Rails.logger,但您可能需要考虑使您的gem使用的记录器可配置,即允许用户将MyGem.logger设置为他们想要的任何记录器。

您可以将其默认为只写入stdout的内容,在rails应用中,您可以在初始化程序中设置MyGem.logger = Rails.logger。在轨道之外使用宝石的人也可以这样做。