class WeChat::Bot::Logger

Constants

LEVELS

Attributes

level[RW]

@return [Symbol]

mutex[R]

@return [Mutex]

output[R]

@return [IO]

Public Class Methods

new(output, bot) click to toggle source
# File lib/wechat/bot/logger.rb, line 16
def initialize(output, bot)
  @output = output
  @bot = bot
  @mutex = Mutex.new
  @level = :info
end

Public Instance Methods

debug(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 27
def debug(message)
  log(:debug, message)
end
error(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 39
def error(message)
  log(:error, message)
end
fatal(exception) click to toggle source
# File lib/wechat/bot/logger.rb, line 43
def fatal(exception)
  message = ["#{exception.backtrace.first}: #{exception.message} (#{exception.class})"]
  message.concat(exception.backtrace[1..-1].map {|s| "\t" + s})
  log(:fatal, message.join("\n"))
end
info(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 31
def info(message)
  log(:info, message)
end
log(level, message) click to toggle source
# File lib/wechat/bot/logger.rb, line 49
def log(level, message)
  return unless can_log?(level)
  return if message.to_s.empty?

  @mutex.synchronize do
    message = format_message(format_general(message), level)
    @output.puts message
  end
end
verbose(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 23
def verbose(message)
  log(:verbose, message)
end
warn(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 35
def warn(message)
  log(:warn, message)
end

Private Instance Methods

can_log?(level) click to toggle source
# File lib/wechat/bot/logger.rb, line 61
def can_log?(level)
  @level = :verbose if @bot.config.verbose
  LEVELS.index(level) >= LEVELS.index(@level)
end
format_debug(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 78
def format_debug(message)
  "DEBUG   [#{timestamp}] #{message.colorize(:light_black)}"
end
format_error(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 90
def format_error(message)
  "ERROR   [#{timestamp}] #{message.colorize(:light_red)}"
end
format_fatal(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 94
def format_fatal(message)
  "FATAL   [#{timestamp}] #{message.colorize(:red)}"
end
format_general(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 66
def format_general(message)
  message
end
format_info(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 82
def format_info(message)
  "INFO    [#{timestamp}] #{message}"
end
format_message(message, level) click to toggle source
# File lib/wechat/bot/logger.rb, line 70
def format_message(message, level)
  send("format_#{level}", message)
end
format_verbose(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 74
def format_verbose(message)
  "VERBOSE [#{timestamp}] #{message.colorize(:light_black)}"
end
format_warn(message) click to toggle source
# File lib/wechat/bot/logger.rb, line 86
def format_warn(message)
  "WRAN    [#{timestamp}] #{message.colorize(:yellow)}"
end
timestamp() click to toggle source
# File lib/wechat/bot/logger.rb, line 98
def timestamp
  Time.now.strftime("%Y-%m-%d %H:%M:%S.%2N")
end