Sha256: 8954ab59f94b0378a3f0634945f4eaa8d2f65ab88be32d8ad32121295451eda9

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

require 'logger'
require 'forwardable'
require 'fedux_org/stdlib/logging/severity'

module FeduxOrg
  module Stdlib
    module Logging
      class Logger

        extend ::Forwardable
        def_delegators :@logger, :fatal, :warn, :debug, :info, :error, :unknown

        attr_reader :mode

        def initialize(logger = ::Logger.new( $stderr ) )
          @logger = logger
          self.mode = :info
        end

        def mode=(m)
          @mode = m

          case m
          when :debug
            @logger.level = ::Logger::DEBUG
            format_debug
          when :silent
            @logger.level = ::Logger::SILENT
          when :info
            @logger.level = ::Logger::INFO
            format_standard
          else
            @logger.level = ::Logger::INFO
            format_standard
          end
        end

        private

        def format_debug
          @logger.formatter = proc { |severity, datetime, progname , msg|
            debug_msg("%s %s %s: %s\n" % [ datetime, severity, progname, msg ])
          }
        end

        def format_standard
          @logger.formatter = proc { |severity, datetime, _, msg|
            info_msg( "%s %s: %s\n" % [ datetime, severity, msg ] )
          }
        end

        def error_msg(msg)
          ANSI.red(msg)
        end

        def info_msg(msg)
          msg
        end

        def debug_msg(msg)
          msg
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fedux_org-stdlib-0.1.0 lib/fedux_org/stdlib/logging/logger.rb
fedux_org-stdlib-0.0.39 lib/fedux_org/stdlib/logging/logger.rb