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