| Path: | lib/rbot/ircbot.rb |
| Last Update: | Sun Jun 27 10:21:56 +0200 2010 |
# File lib/rbot/ircbot.rb, line 107
107: def debug(message=nil, who_pos=1)
108: rawlog(Logger::Severity::DEBUG, message, who_pos)
109: end
# File lib/rbot/ircbot.rb, line 119
119: def error(message=nil, who_pos=1)
120: rawlog(Logger::Severity::ERROR, message, who_pos)
121: end
# File lib/rbot/ircbot.rb, line 123
123: def fatal(message=nil, who_pos=1)
124: rawlog(Logger::Severity::FATAL, message, who_pos)
125: end
# File lib/rbot/ircbot.rb, line 72
72: def halt_logger
73: if $log_thread && $log_thread.alive?
74: $log_queue << nil
75: $log_thread.join
76: $log_thread = nil
77: end
78: end
# File lib/rbot/ircbot.rb, line 111
111: def log(message=nil, who_pos=1)
112: rawlog(Logger::Severity::INFO, message, who_pos)
113: end
# File lib/rbot/ircbot.rb, line 102
102: def log_session_end
103: $logger << "\n\n=== #{botclass} session ended on #{Time.now.strftime($dateformat)} ===\n\n"
104: $log_queue << nil
105: end
# File lib/rbot/ircbot.rb, line 97
97: def log_session_start
98: $logger << "\n\n=== #{botclass} session started on #{Time.now.strftime($dateformat)} ===\n\n"
99: restart_logger
100: end
# File lib/rbot/ircbot.rb, line 47
47: def rawlog(level, message=nil, who_pos=1)
48: call_stack = caller
49: if call_stack.length > who_pos
50: who = call_stack[who_pos].sub(%r{(?:.+)/([^/]+):(\d+)(:in .*)?}) { "#{$1}:#{$2}#{$3}" }
51: else
52: who = "(unknown)"
53: end
54: # Output each line. To distinguish between separate messages and multi-line
55: # messages originating at the same time, we blank #{who} after the first message
56: # is output.
57: # Also, we output strings as-is but for other objects we use pretty_inspect
58: case message
59: when String
60: str = message
61: else
62: str = message.pretty_inspect
63: end
64: qmsg = Array.new
65: str.each_line { |l|
66: qmsg.push [level, l.chomp, who]
67: who = ' ' * who.size
68: }
69: $log_queue.push qmsg
70: end
# File lib/rbot/ircbot.rb, line 82
82: def restart_logger(newlogger = false)
83: halt_logger
84:
85: $logger = newlogger if newlogger
86:
87: $log_thread = Thread.new do
88: ls = nil
89: while ls = $log_queue.pop
90: ls.each { |l| $logger.add(*l) }
91: end
92: end
93: end