50 lines
1.0 KiB
Ruby
50 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'syslog'
|
|
# require 'syslog/logger'
|
|
|
|
module SpaceTraders
|
|
class Log
|
|
CRIT = 0
|
|
ERROR = 1
|
|
WARN = 2
|
|
INFO = 3
|
|
DEBUG = 4
|
|
|
|
LEVELS = {
|
|
:crit => CRIT,
|
|
:error => ERROR,
|
|
:warn => WARN,
|
|
:info => INFO,
|
|
:debug => DEBUG,
|
|
}
|
|
|
|
LEVELS_STR = [CRIT, ERROR, WARN, INFO, DEBUG]
|
|
|
|
LEVELS.each do |level_str, level|
|
|
define_singleton_method(level_str) do |message|
|
|
SpaceTraders.log(level_str, message)
|
|
end
|
|
end
|
|
end
|
|
|
|
@@log_io = STDERR
|
|
@@log_min = Log::DEBUG
|
|
|
|
def self.log(level, message)
|
|
level_str = level.is_a?(Symbol) ? level : Log::LEVELS_STR[level]
|
|
level = level.is_a?(Integer) ? level : Log::LEVELS[level]
|
|
@@log_io.puts "#{Time.now.to_s} #{level_str.to_s.rjust(5).ljust(8)}: #{message}" if level <= @@log_min
|
|
end
|
|
|
|
log_io = STDERR
|
|
log_min = Log::DEBUG
|
|
Log.debug "log_io = #{log_io}"
|
|
Log.debug "log_min = #{log_min}"
|
|
end
|
|
|
|
Dir['lib/*.rb'].filter { _1 != 'lib/space_traders.rb' }.each do |f|
|
|
SpaceTraders::Log.warn("load #{f}")
|
|
load f
|
|
end
|