如何在我的rubygem中写入将在rails应用程序中使用的日志?

Vic*_*tor 4 ruby logging ruby-on-rails

我正在开发一个将在rails应用程序中使用的rubygem.在这个rubygem我需要记录一些信息(警告,错误......).

我看到了一些宝石来做这个,比如日志,但显然我不需要配置日志输出(stdout,一些文件).
我的rails应用程序将消息记录在文件中.所以,我的问题是:有没有办法让我的gem使用我的rails应用程序使用的相同日志配置?或者我的宝石会根据自己的配置发送日志?

Jul*_*ier 10

您可以Rails.logger直接使用,如果您的gem始终只在Rails应用程序中使用,则该选项有效.您也可以为gem命名空间定义一个记录器,默认为Rails.loggerif if,Logger.new(STDOUT)如果不是,则与writer一起定义,因此它可以覆盖:

module MyGem
  def self.logger
    @@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
  end

  def self.logger=(logger)
    @@logger = logger
  end
end
Run Code Online (Sandbox Code Playgroud)

无论如何,您将使用它:

MyGem.logger.debug "it works"
Run Code Online (Sandbox Code Playgroud)