これを使用して次のように設定しました: Ruby - モジュール/クラス間でロガー インスタンスを共有する
編集:以下のコメントに基づいて、コードを更新しましたが、まだログに問題があります。
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
質問: モジュールを変更して、このタイプのロジックを 1 回定義できるようにするにはどうすればよいですか?
logger.debug: undefined method `debug' for "%N ":String でエラーが発生します