ruby-on-rails - 如何在我的 ruby​​gem 中写入将在 Rails 应用程序中使用的日志?

标签 ruby-on-rails ruby logging

我正在开发将在 Rails 应用程序中使用的 ruby​​gem。在这个 ruby​​gem 中,我需要记录一些信息(警告、错误……)。

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

最佳答案

您可以直接使用 Rails.logger,如果您的 gem 始终只在 Rails 应用程序中使用,那么这是有效的。您也可以为您的 gem 命名空间定义一个记录器,如果已定义,则默认为 Rails.logger,如果未定义,则默认为 Logger.new(STDOUT),以及编写器,因此它是可覆盖的:

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

  def self.logger=(logger)
    @@logger = logger
  end
end

无论如何,您将像这样使用它:

MyGem.logger.debug "it works"

关于ruby-on-rails - 如何在我的 ruby​​gem 中写入将在 Rails 应用程序中使用的日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623347/

相关文章:

ruby-on-rails - Ruby 在尝试 require 模块时返回 TypeError

ruby-on-rails - 引擎模型的 ActiveAdmin 中的枚举选择

ruby-on-rails - 使用 Rails 模板将 gem 添加到特定环境的任何方法?

linux - 如何记录 ssh 客户端连接/命令?

java - 如何将 Spring DEBUG 日志重定向到单独的文件?

ruby-on-rails - rails : has_many WITHOUT belongs_to

javascript - 如何使用 Ajax 以 html 格式呈现没有布局的 Rails 操作?

ruby - rand(Range) - 没有将 Range 隐式转换为 Integer

Ruby 赋值方法

logging - 渐变颜色输出