X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Flogger.rb;h=494324d9bf88e592fa088991101ee5e0a9fa9ff2;hb=8a458c02a29b1d7c41b9420eabc90ba40bbe960a;hp=fd6d485fea3675b144a63e750f3c0ea7adefe713;hpb=98446561cf3c7126dd93b34c9be361fa4aa8da36;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/logger.rb b/lib/rbot/logger.rb index fd6d485f..494324d9 100644 --- a/lib/rbot/logger.rb +++ b/lib/rbot/logger.rb @@ -14,12 +14,21 @@ class Bot class LoggerManager include Singleton + def enable_console_logger + @console_logger = Logger.new(STDERR) + @console_logger.datetime_format = @dateformat + @console_logger.level = Logger::Severity::DEBUG + end + + def disable_console_logger + @console_logger = nil + end + def initialize @dateformat = "%Y/%m/%d %H:%M:%S" - @logger = Logger.new(STDERR) - @logger.datetime_format = @dateformat - @logger.level = Logger::Severity::DEBUG + enable_console_logger + @file_logger = nil @queue = Queue.new @@ -27,26 +36,26 @@ class Bot end def set_logfile(filename, keep, max_size) + # close previous file logger if present + @file_logger.close if @file_logger + @file_logger = Logger.new(filename, keep, max_size*1024*1024) @file_logger.datetime_format = @dateformat - @file_logger.level = @logger.level + @file_logger.level = @console_logger.level + # make sure the thread is running, which might be false after a fork # (conveniently, we call set_logfile right after the fork) start_thread end def set_level(level) - @logger.level = level - if @file_logger - @file_logger.level = level - end + @console_logger.level = level if @console_logger + @file_logger.level = level if @file_logger end def sync_log(severity, message = nil, progname = nil) - @logger.add(severity, message, progname) - if @file_logger - @file_logger.add(severity, message, progname) - end + @console_logger.add(severity, message, progname) if @console_logger + @file_logger.add(severity, message, progname) if @file_logger end def async_log(severity, message=nil, who_pos=1) @@ -74,6 +83,8 @@ class Bot end def log_session_start + # if we forked, the thread may be dead, so let's restart it if necessary + start_thread if @file_logger @file_logger << "\n\n=== session started on #{Time.now.strftime(@dateformat)} ===\n\n" end @@ -90,6 +101,7 @@ class Bot @queue << nil @thread.join @thread = nil + log_session_end end end