Sha256: 966e13e169709b2ee2c684e29e5637054e06176a42e2e190e591f91f82315b85

Contents?: true

Size: 1.15 KB

Versions: 9

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true
require 'logger'
require 'yaml'
require 'singleton'
require 'active_support/inflector'
require 'proxes/loggers/elasticsearch'

# ProxES::Services::Logger.instance

module ProxES
  module Services
    class Logger
      include Singleton

      CONFIG = './config/logger.yml'
      attr_reader :loggers

      def initialize
        @loggers = []
        config.each do |values|
          klass = values['class'].constantize
          opts = values['options'] || nil
          logger = klass.new(opts)
          if values['level']
            logger.level = klass.const_get(values['level'].to_sym)
          end
          @loggers << logger
        end
      end

      def method_missing(method, *args, &block)
        loggers.each { |logger| logger.send(method, *args, &block) }
      end

      def respond_to_missing?(method, include_private = false)
        loggers.any? { |logger| logger.respond_to?(method) }
      end

      private

      def config
        @config ||= File.exist?(CONFIG) ? YAML.load_file(CONFIG) : default
      end

      def default
        [{ 'name' => 'default', 'class' => 'Logger' }]
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
proxes-0.4.0 lib/proxes/services/logger.rb
proxes-0.3.6 lib/proxes/services/logger.rb
proxes-0.3.5 lib/proxes/services/logger.rb
proxes-0.3.3 lib/proxes/services/logger.rb
proxes-0.3.2 lib/proxes/services/logger.rb
proxes-0.3.1 lib/proxes/services/logger.rb
proxes-0.3.0 lib/proxes/services/logger.rb
proxes-0.2.0 lib/proxes/services/logger.rb
proxes-0.1.0 lib/proxes/services/logger.rb