def log2str(levels = 'normal', theme = True, logfile = None, lvldiff = None): new_out, new_err = StringIO(), StringIO() old_out, old_err = sys.stdout, sys.stderr try: sys.stdout, sys.stderr = new_out, new_err #yield sys.stdout.getvalue(), sys.stderr.getvalue() logger.getLogger(levels = levels, theme = theme, logfile = logfile, lvldiff = lvldiff) yield sys.stdout, sys.stderr finally: sys.stdout, sys.stderr = old_out, old_err
def testExtra(self, msg, extra, outs): #PyPPLLogFilter._clearDebug() log = logger.getLogger('all', None, lvldiff='DEBUG') with helpers.log2str('all', None, lvldiff='DEBUG') as (out, err): log.info(msg, extra=extra) for out in outs: self.assertIn(out, err.getvalue())
def testGetLogger(self, levels, theme, logfile, lvldiff, msg, outs, fileouts=None): log2 = logger.getLogger() log = logger.getLogger(levels, theme, logfile, lvldiff) self.assertIs(log, log2) self.assertIsInstance(log, logging.Logger) self.assertEqual(len(log.handlers), int(bool(logfile)) + 1) with helpers.log2str(levels, theme, logfile, lvldiff) as (out, err): log.info(msg) self.assertEqual(err.getvalue().strip()[21:], outs) if logfile: self.assertIn(fileouts, helpers.readFile(logfile))
def testMulti2(self): #PyPPLLogFilter._clearDebug() log = logger.getLogger('all', None, lvldiff='DEBUG') with helpers.log2str('all', None, lvldiff='DEBUG') as (out, err): log.info('ABC', extra={ 'pbar': False, 'proc': 'p', 'jobidx': 1, 'joblen': 2 }) log.info('EFG', extra={'pbar': 'next', 'jobidx': 1, 'joblen': 2}) self.assertIn('INFO] p: [2/2] ABC', err.getvalue()) self.assertIn('EFG\n', err.getvalue())
def testMulti(self): #PyPPLLogFilter._clearDebug() log = logger.getLogger('all', None, lvldiff='DEBUG') with helpers.log2str('all', None, lvldiff='DEBUG') as (out, err): log.info('ABC', extra={ 'level2': 'EXPECT_CHECKING', 'jobidx': 1, 'joblen': 2 }) log.info('EFG', extra={ 'level2': 'EXPECT_CHECKING', 'jobidx': 1, 'joblen': 2 }) self.assertIn('...... max=1 (EXPECT_CHECKING) reached', err.getvalue()) self.assertIn('INFO] [2/2] ABC', err.getvalue()) self.assertNotIn('EFG', err.getvalue())
def log2sys(levels='normal', theme=True, logfile=None, lvldiff=None): logger.getLogger(levels=levels, theme=theme, logfile=logfile, lvldiff=lvldiff)