Sha256: 71f99e1748cf33971a7dc8a428d00fae3c46c01260916c7645d0a9d1eaf0d700

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: false

module RubySmart
  module SimpleLogger
    module KlassLogger
      def self.extended(base)
        base.send(:include, RubySmart::SimpleLogger::Logger::Severity)
        base.class_eval do
          self.klass_logger_opts = {}
        end
      end

      def klass_logger_opts
        class_variable_get('@@klass_logger_opts')
      end

      def klass_logger_opts=(opts)
        clear!
        class_variable_set('@@klass_logger_opts', opts)
      end

      # delegate new method to Logger
      def new(*args)
        RubySmart::SimpleLogger::Logger.new(*args)
      end

      def klass_logger
        @klass_logger ||= self.new(self.klass_logger_opts.dup)
      end

      def clear!
        @klass_logger = nil
      end

      def method_missing(name, *args, **kwargs, &block)
        return self.klass_logger.send(name, *args, **kwargs, &block) if self.klass_logger.respond_to? name
        super
      end

      def respond_to?(method_name, _include_private = false)
        self.klass_logger.respond_to? method_name
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby_smart-simple_logger-1.5.3 lib/ruby_smart/simple_logger/klass_logger.rb
ruby_smart-simple_logger-1.5.2 lib/ruby_smart/simple_logger/klass_logger.rb
ruby_smart-simple_logger-1.5.1 lib/ruby_smart/simple_logger/klass_logger.rb