Sha256: a7aab4f59f62ce513bb4a462ee84dc0a2564360123b5f92040a7c74e7fbdde58

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module Eco
  module Language
    # Some modules/classes use logger, but they may not be connected to session.
    # This prevents errors with this.
    module AuxiliarLogger
      attr_writer :logger

      # Provides either an available logger or a basic one
      def logger
        if instance_variable_defined?(:@session) && !@session.nil?
          @session.logger
        elsif respond_to?(:session)
          session.logger
        elsif Object.const_defined?(:ASSETS)
          ASSETS.session.logger
        elsif defined?(super)
          super
        else
          @logger ||= Eco::Language::BasicLogger.new
        end
      end

      # Shortcut to logger.
      # @todo allow for more channels (atm it's just :general )
      # @note when `:general` is included, it ensures at least
      #   `:info` level is also logged.
      # @return [NilClass]
      def log(*levels, &block)
        return unless logger

        levels = levels.compact.uniq.map(&:to_sym)
        levels.unshift(:info) if levels.include?(:general) && levels.length == 1

        levels.each do |level|
          next unless logger.respond_to?(:level)

          logger.send(level, &block)
        end

        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eco-helpers-3.0.21 lib/eco/language/auxiliar_logger.rb