0

これを使用して次のように設定しました: 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 でエラーが発生します

4

2 に答える 2