Module: Evesync::Log

Defined in:
lib/evesync/log.rb

Overview

Logging via syslog

Constant Summary collapse

LEVELS =

Supported levels for logging

%i[debug info notice warn error fatal]
DEFAULT_ENGINE =

Default engine for logging, one of (:io, :syslog)

:io
SYSLOG =

Log level mapping for syslog

{
  :debug  => Syslog::LOG_DEBUG,
  :info   => Syslog::LOG_INFO,
  :notice => Syslog::LOG_NOTICE,
  :warn   => Syslog::LOG_WARNING,
  :error  => Syslog::LOG_ERR,
  :fatal  => Syslog::LOG_CRIT,
  #:alert => Syslog::LOG_ALERT,
  #:emerg => Syslog::LOG_EMERG,
}
SYSLOG_OPTIONS =
[
  Syslog::LOG_PID,
  Syslog::LOG_NOWAIT,
  Syslog::LOG_CONS,
  Syslog::LOG_PERROR,
].inject(&:|)
SYSLOG_FACILITY =
[
  Syslog::LOG_DAEMON,
  Syslog::LOG_LOCAL5,
].inject(&:|)

Class Method Summary collapse

Class Method Details

.check_loggerObject



74
75
76
# File 'lib/evesync/log.rb', line 74

def check_logger
  init_logger unless @logger
end

.engine=(engine) ⇒ Object

Raises:

  • (UnsupportedLogEngine)


78
79
80
81
82
# File 'lib/evesync/log.rb', line 78

def engine=(engine)
  raise UnsupportedLogEngine.new(engine) \
    unless [:syslog, :io].member? engine
  @engine = engine
end

.init_loggerObject

Using syslog implementation



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/evesync/log.rb', line 85

def init_logger
  @engine ||= DEFAULT_ENGINE
  prog = File.basename($PROGRAM_NAME)

  case @engine
  when :syslog
    @logger = Syslog.open(prog, SYSLOG_OPTIONS, SYSLOG_FACILITY)

  when :io
    FileUtils.mkdir_p '/var/log/evesync/'
    @logger = Logger.new("/var/log/evesync/#{prog}.log")
    @logger.formatter = proc do |sev, dtime, _prog, msg|
      time = dtime.strftime('%Y-%m-%d %H:%M:%S')
      "[#{time}] #{prog.ljust(8)} #{sev.ljust(5)}: #{msg}\n"
    end
  end

  @level  = Config[:loglevel] || :info
end

.levelObject



70
71
72
# File 'lib/evesync/log.rb', line 70

def level
  @level
end

.level=(lvl) ⇒ Object



64
65
66
67
68
# File 'lib/evesync/log.rb', line 64

def level=(lvl)
  check_logger
  raise "Unknown level #{lvl}" unless LEVELS.include? lvl
  @level = lvl
end

.to_string(*args) ⇒ Object



105
106
107
108
# File 'lib/evesync/log.rb', line 105

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