Я настроил следующее с помощью этого: Ruby - share logger instance among module/classesКак я могу изменить настройки регистратора на основе переменной ENV в рубине с помощью регистратора?
EDIT: Основываясь на комментариях ниже, я обновил код, но все еще есть проблемы при входе.
module Logging
# in classes needing to be logged use 'include Logger'
require 'logger'
require 'remote_syslog_logger'
require_relative 'env'
class << self
def logger
return @logger if @logger
if ENV['ENVIRONMENT'] == 'production' #may need to change this
@logger ||= Logger.new($stdout)
@logger.level = Logger::WARN
@logger.datetime_format = "%N "
elsif ENV['ENVIRONMENT'] == 'development'
binding.pry
#$logger = Logger.new(STDOUT)
@logger = RemoteSyslogLogger.new('logs2.papertrailapp.com',39257)
@logger.level = Logger::DEBUG
@logger.datetime_format = "%N "
end
end
def logger=(logger)
@logger = logger
end
end
# Addition
def self.included(base)
class << base
def logger
Logging.logger
end
end
end
def logger
Logging.logger
end
end
Как войти:
class CronCheck
require_relative 'module_logger.rb'
include Logging
def self.run
begin
logger.debug "**** running cron_check_schedule.rb #{Time.now} #{Time.now.to_i}****"
rescue
end
end
Вопрос: Как я могу изменить модуль, так что этот тип логики может быть определен один раз, и все, что нужно сделать, это передать значение ENV для все классы и методы регистрируются таким же образом?
Я получаю сообщение об ошибке при logger.debug: неопределенный метод `отладки» для „% N“: String
Я просто используя рубин не рельсы. – Angela
О, извините! Плохое понимание прочитанного с моей стороны. –
Не стоит беспокоиться :) может вы еще что-нибудь предложить? – Angela