Sha256: c5273f76c4e483f34f842e134ccceefd023261d96786f2504e30a1dd93aae82c

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

module ResqueScheduler
  # Just builds a logger, with specified verbosity and destination.
  # The simplest example:
  #
  #   ResqueScheduler::LoggerBuilder.new.build
  class LoggerBuilder
    # Initializes new instance of the builder
    #
    # Pass :opts Hash with
    #   - :mute if logger needs to be silent for all levels. Default - false
    #   - :verbose if there is a need in debug messages. Default - false
    #   - :log_dev to output logs into a desired file. Default - STDOUT
    #
    # Example:
    #
    #   LoggerBuilder.new(:mute => false, :verbose => true, :log_dev => 'log/sheduler.log')
    def initialize(opts={})
      @muted   = !!opts[:mute]
      @verbose = !!opts[:verbose]
      @log_dev = opts[:log_dev] || STDOUT
    end

    # Returns an instance of Logger
    def build
      logger = Logger.new(@log_dev)
      logger.level = level
      logger.datetime_format = "%Y-%m-%d %H:%M:%S"
      logger.formatter = formatter

      logger
    end

    private

    def level
      if @verbose && !@muted
        Logger::DEBUG
      elsif !@muted
        Logger::INFO
      else
        Logger::FATAL
      end
    end

    def formatter
      proc do |severity, datetime, progname, msg|
        "[#{severity}] #{datetime}: #{msg}\n"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
resque-scheduler-2.3.1 lib/resque_scheduler/logger_builder.rb
resque-scheduler-2.3.0 lib/resque_scheduler/logger_builder.rb
resque-scheduler-2.2.0 lib/resque_scheduler/logger_builder.rb
resque-scheduler-2.1.1 lib/resque_scheduler/logger_builder.rb
resque-scheduler-2.1.0 lib/resque_scheduler/logger_builder.rb