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

gil*_*las 11 ruby ruby-on-rails ruby-on-rails-3

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

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

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

Jes*_*mer 15

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

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

module MyGem
  class Railties < ::Rails::Railtie
    initializer 'Rails logger' do
      MyGem.logger = Rails.logger
    end
  end
end
Run Code Online (Sandbox Code Playgroud)


Fre*_*ung 8

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

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