我有一个我写的宝石,我在我的rails应用程序中使用它。
我想从我的gem写入rails logger,但显然那里没有标准的rails logger。
实现我想要做的事的正确方法是什么?
答案 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
。在轨道之外使用宝石的人也可以这样做。