class Resque::Scheduler::LoggerBuilder

Just builds a logger, with specified verbosity and destination. The simplest example:

Resque::Scheduler::LoggerBuilder.new.build

Public Class Methods

new(opts = {}) click to toggle source

Initializes new instance of the builder

Pass :opts Hash with

- :quiet 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
- :format log format, either 'text', 'json' or 'logfmt'. Default - 'text'

Example:

LoggerBuilder.new(
  :quiet => false, :verbose => true, :log_dev => 'log/scheduler.log'
)
# File lib/resque/scheduler/logger_builder.rb, line 25
def initialize(opts = {})
  @quiet = !!opts[:quiet]
  @verbose = !!opts[:verbose]
  @log_dev = opts[:log_dev] || $stdout
  @format = opts[:format] || 'text'
end

Public Instance Methods

build() click to toggle source

Returns an instance of MonoLogger

# File lib/resque/scheduler/logger_builder.rb, line 33
def build
  logger = MonoLogger.new(@log_dev)
  logger.progname = 'resque-scheduler'.freeze
  logger.level = level
  logger.formatter = send(:"#{@format}_formatter")
  logger
end

Private Instance Methods

json_formatter() click to toggle source
# File lib/resque/scheduler/logger_builder.rb, line 59
def json_formatter
  proc do |severity, datetime, progname, msg|
    require 'json'
    JSON.dump(
      name: progname,
      progname: progname,
      level: severity,
      timestamp: datetime.iso8601,
      msg: msg
    ) + "\n"
  end
end
level() click to toggle source
# File lib/resque/scheduler/logger_builder.rb, line 43
def level
  if @verbose && !@quiet
    MonoLogger::DEBUG
  elsif !@quiet
    MonoLogger::INFO
  else
    MonoLogger::FATAL
  end
end
logfmt_formatter() click to toggle source
# File lib/resque/scheduler/logger_builder.rb, line 72
def logfmt_formatter
  proc do |severity, datetime, progname, msg|
    "timestamp=\"#{datetime.iso8601}\" " \
    "level=\"#{severity}\" " \
    "progname=\"#{progname}\" " \
    "msg=\"#{msg}\"\n"
  end
end
text_formatter() click to toggle source
# File lib/resque/scheduler/logger_builder.rb, line 53
def text_formatter
  proc do |severity, datetime, progname, msg|
    "#{progname}: [#{severity}] #{datetime.iso8601}: #{msg}\n"
  end
end