Author: janne.t.harkonen
Date: Wed Mar 25 02:25:32 2009
New Revision: 1524
Modified:
trunk/src/robot/output/systemlogger.py
trunk/utest/output/test_systemlogger.py
Log:
Syslog now caches messages.
When a new logger with 'write' method is registered, these cached
messages are written to that logger.
Modified: trunk/src/robot/output/systemlogger.py
==============================================================================
--- trunk/src/robot/output/systemlogger.py (original)
+++ trunk/src/robot/output/systemlogger.py Wed Mar 25 02:25:32 2009
@@ -27,12 +27,16 @@
self._writers = []
self._output_filers = []
self._closers = []
+ self.message_cache = []
self.monitor = None
def register_logger(self, *loggers):
for logger in loggers:
if hasattr(logger, 'write'):
self._writers.append(logger.write)
+ if self.message_cache:
+ for msg in self.message_cache:
+ logger.write(msg, msg.level)
if hasattr(logger, 'output_file'):
self._output_filers.append(logger.output_file)
if hasattr(logger, 'close'):
@@ -64,6 +68,8 @@
def write(self, message, level='INFO'):
msg = Message(message, level)
+ if self.message_cache is not None:
+ self.message_cache.append(msg)
for write in self._writers:
write(msg, level)
Modified: trunk/utest/output/test_systemlogger.py
==============================================================================
--- trunk/utest/output/test_systemlogger.py (original)
+++ trunk/utest/output/test_systemlogger.py Wed Mar 25 02:25:32 2009
@@ -134,6 +134,22 @@
self.syslog.register_file_logger('None')
assert_equals(len(self.syslog._writers), 0)
+ def test_cached_messages_are_given_to_registered_writers(self):
+ self.syslog.write('This is a cached message', 'INFO')
+ self.syslog.write('Another cached message', 'TRACE')
+ logger = LoggerMock(('This is a cached message', 'INFO'),
+ ('Another cached message', 'TRACE'))
+ self.syslog.register_logger(logger)
+ assert_equals(logger.msg.message, 'Another cached message')
+
+ def test_message_cache_can_be_turned_off(self):
+ self.syslog.message_cache = None
+ self.syslog.write('This message is not cached', 'INFO')
+ logger = LoggerMock(('', ''))
+ self.syslog.register_logger(logger)
+ assert_false(hasattr(logger, 'msg'))
+
+
if __name__ == "__main__":