Module: Evesync::Log

Defined in:
lib/evesync/log.rb

Overview

This module is responsible for logging

Constant Summary collapse

LEVELS =

Supported levels for logging

%i[debug info warn error fatal].freeze

Class Method Summary collapse

Class Method Details

.check_loggerObject



23
24
25
# File 'lib/evesync/log.rb', line 23

def check_logger
  init_logger unless @logger
end

.init_loggerObject



53
54
55
56
57
58
59
60
# File 'lib/evesync/log.rb', line 53

def init_logger
  @logger = Logger.new(STDERR)
  @logger.formatter = proc do |sev, dtime, _prog, msg|
    time = dtime.strftime('%Y-%m-%d %H:%M:%S')
    prog = File.basename($PROGRAM_NAME)
    "[#{time}] #{prog.ljust(8)} #{sev.ljust(5)}: #{msg}\n"
  end
end

.levelObject



39
40
41
42
# File 'lib/evesync/log.rb', line 39

def level
  check_logger
  @logger.level
end

.level=(lvl) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/evesync/log.rb', line 27

def level=(lvl)
  check_logger
  if lvl.is_a?(Symbol) or lvl.is_a?(String)
    @logger.level =
      begin
        Logger.const_get(lvl.to_s.upcase)
      rescue NameError
        Logger::DEBUG
      end
  end
end

.method_missing(m, *args) ⇒ Object

Raises:

  • (NoMethodError)


14
15
16
17
18
19
20
21
# File 'lib/evesync/log.rb', line 14

def method_missing(m, *args)
  # Unlisted methods are not allowed
  raise NoMethodError unless LEVELS.include?(m)

  check_logger
  @logger.send(m, to_string(*args))
  nil
end

.simple=(bool) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/evesync/log.rb', line 44

def simple=(bool)
  init_logger unless @logger
  if bool
    @logger.formatter = proc do |_sev, _dt, _prog, msg|
      "#{msg}\n"
    end
  end
end

.to_string(*args) ⇒ Object



62
63
64
65
# File 'lib/evesync/log.rb', line 62

def to_string(*args)
  to_s_with_space = ->(s) { "#{s} " }
  args.map(&to_s_with_space).reduce(&:+).strip
end