def test_queue_debug(self): out = StringIO() name = '%s.test_queue_debug' % self.__class__.__name__ logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) handler = ConfigureOutputHandler(out, out, maxlen=3) handler.setFormatter(logging.Formatter('%(levelname)s:%(message)s')) logger.addHandler(handler) with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.info('yes') logger.info('qux') self.assertEqual( out.getvalue(), 'checking bar... yes\n' 'qux\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:do foo\n' 'ERROR:fail\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.debug('do bar') logger.debug('do baz') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:do foo\n' 'DEBUG:do bar\n' 'DEBUG:do baz\n' 'ERROR:fail\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.debug('do bar') logger.debug('do baz') logger.debug('do qux') logger.debug('do hoge') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:<truncated - see config.log for full output>\n' 'DEBUG:do baz\n' 'DEBUG:do qux\n' 'DEBUG:do hoge\n' 'ERROR:fail\n' )
def test_queue_debug(self): out = StringIO() name = '%s.test_queue_debug' % self.__class__.__name__ logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) handler = ConfigureOutputHandler(out, out, maxlen=3) handler.setFormatter(logging.Formatter('%(levelname)s:%(message)s')) logger.addHandler(handler) with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.info('yes') logger.info('qux') self.assertEqual( out.getvalue(), 'checking bar... yes\n' 'qux\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:do foo\n' 'ERROR:fail\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.debug('do bar') logger.debug('do baz') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:do foo\n' 'DEBUG:do bar\n' 'DEBUG:do baz\n' 'ERROR:fail\n' ) out.seek(0) out.truncate() with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.debug('do bar') logger.debug('do baz') logger.debug('do qux') logger.debug('do hoge') logger.info('no') logger.error('fail') self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:<truncated - see config.log for full output>\n' 'DEBUG:do baz\n' 'DEBUG:do qux\n' 'DEBUG:do hoge\n' 'ERROR:fail\n' ) out.seek(0) out.truncate() try: with handler.queue_debug(): logger.info('checking bar... ') logger.debug('do foo') logger.debug('do bar') logger.info('no') e = Exception('fail') raise e except Exception as caught: self.assertIs(caught, e) self.assertEqual( out.getvalue(), 'checking bar... no\n' 'DEBUG:do foo\n' 'DEBUG:do bar\n' )
def test_queue_debug_reentrant(self): out = StringIO() name = '%s.test_queue_debug_reentrant' % self.__class__.__name__ logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) handler = ConfigureOutputHandler(out, out, maxlen=10) handler.setFormatter(logging.Formatter('%(levelname)s| %(message)s')) logger.addHandler(handler) try: with handler.queue_debug(): logger.info('outer info') logger.debug('outer debug') with handler.queue_debug(): logger.info('inner info') logger.debug('inner debug') e = Exception('inner exception') raise e except Exception as caught: self.assertIs(caught, e) self.assertEqual(out.getvalue(), 'outer info\n' 'inner info\n' 'DEBUG| outer debug\n' 'DEBUG| inner debug\n') out.seek(0) out.truncate() try: with handler.queue_debug(): logger.info('outer info') logger.debug('outer debug') with handler.queue_debug(): logger.info('inner info') logger.debug('inner debug') e = Exception('outer exception') raise e except Exception as caught: self.assertIs(caught, e) self.assertEqual(out.getvalue(), 'outer info\n' 'inner info\n' 'DEBUG| outer debug\n' 'DEBUG| inner debug\n') out.seek(0) out.truncate() with handler.queue_debug(): logger.info('outer info') logger.debug('outer debug') with handler.queue_debug(): logger.info('inner info') logger.debug('inner debug') logger.error('inner error') self.assertEqual(out.getvalue(), 'outer info\n' 'inner info\n' 'DEBUG| outer debug\n' 'DEBUG| inner debug\n' 'ERROR| inner error\n') out.seek(0) out.truncate() with handler.queue_debug(): logger.info('outer info') logger.debug('outer debug') with handler.queue_debug(): logger.info('inner info') logger.debug('inner debug') logger.error('outer error') self.assertEqual(out.getvalue(), 'outer info\n' 'inner info\n' 'DEBUG| outer debug\n' 'DEBUG| inner debug\n' 'ERROR| outer error\n')