В дополнение к регистратору 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
или устанавливать глобальную переменную, которая содержит регистратор - это должен быть метод класса.