Sha256: f23db720bd876df9d554714cde3007a7c986bca4c36fb5729030c5cb3c1af3e7

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

module Enviro
  module Logger

    class DirectoryNotFound < StandardError; end

    def self.included(base)
      base.send(:extend, ClassMethods)
      base.instance_eval do
        class << self
          extend Forwardable
          def_delegators :logger, :debug, :error, :fatal, :info, :warn
        end
      end
    end

    module ClassMethods

      def logger_dir_env(value=nil)
        @_logger_dir_env ||= 'ENVY_LOG_DIR'
        @_logger_dir_env = value.to_s.upcase unless value.nil?
        @_logger_dir_env
      end

      def logger_dir
        @_logger_dir ||= ENV[self.logger_dir_env]
      end

      def logger
        @_logger ||= _setup_logger_for_environment
      end

      private

        def _setup_logger_for_environment
          return ::Rails.logger if defined?(::Rails)
          unless self.logger_dir.nil?
            raise DirectoryNotFound unless File::directory?(self.logger_dir)
            @logger_path = File.join(self.logger_dir, "#{self.environment}.log")
          else
            @logger_path = STDOUT
          end
          require 'logger'
          return ::Logger.new(@logger_path)
        end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
enviro-0.0.4 lib/enviro/logger.rb
enviro-0.0.3 lib/enviro/logger.rb
enviro-0.0.2 lib/enviro/logger.rb
enviro-0.0.1 lib/enviro/logger.rb