Настройка дополнительного регистратора в Rails - как создать экземпляр только один раз? - PullRequest
1 голос
/ 24 октября 2019

В дополнение к регистратору Rails по умолчанию, я хотел бы создать свой собственный. Я буду использовать LogstashLogger , настроенный с помощью пользовательского URL.

Я создал файл lib/custom_logstash_logger.rb с:

class CustomLogstashLogger
  include ActiveSupport::Configurable
  config_accessor :logstash_url

  def self.log(message)
    # ?
  end
end

И я настраиваю его через config/initializers/custom_logstash_logger.rb:

CustomLogstashLogger.config.logstash_url = ENV.fetch("LOGSTASH_URL", nil)

Теперь я могу определить self.log так, чтобы я всегда создавал новый регистратор при каждом вызове метода:

def self.log(message)
    logger = LogStashLogger.new(uri: self.config.logstash_url)
    logger.info(message)
end

Но это вряд лиэффективный - регистратор создается каждый раз, когда вызывается метод log.

Каким был бы идеальный способ создания экземпляра LogStashLogger уже при настройке класса, а не при использовании регистратора? Я не хочу изменять application.rb или устанавливать глобальную переменную, которая содержит регистратор - это должен быть метод класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...