def test_asbool(self): true_values = ['true', 'yes', 'on', 'y', 't', '1'] for v in true_values: self.check_true(v) self.check_true(v.upper()) self.check_true(' %s ' % v.title()) self.assertTrue(asbool(True)) self.assertTrue(asbool(1)) false_values = ['false', 'no', 'off', 'n', 'f', '0'] for v in false_values: self.check_false(v) self.check_false(v.upper()) self.check_false(' %s ' % v.title()) self.assertFalse(asbool(False)) self.assertFalse(asbool(0)) self.assertRaises(ValueError, asbool, 'maybe')
def __init__(self, app, config=None, loglevel='DEBUG', **kwargs): """Stores logging statements per request, and includes a bar on the page that shows the logging statements ''loglevel'' Default log level for messages that should be caught. Note: the root logger's log level also matters! If you do logging.getLogger('').setLevel(logging.INFO), no DEBUG messages will make it to Logview's handler anyway. Config can contain optional additional loggers and the colors they should be highlighted (in an ini file):: logview.sqlalchemy = #ff0000 Or if passing a dict:: app = Logview(app, {'logview.sqlalchemy':'#ff0000'}) """ if config is None: config = {} self.app = app tmpl_dir = os.path.join(here_dir, 'templates') self.mako = TemplateLookup(directories=[tmpl_dir], default_filters=['h']) self.log_colors = {} for key, val in itertools.chain(iter(config.items()), iter(kwargs.items())): if key.startswith('logview.'): self.log_colors[key[len('logview.'):]] = val self.traceback_colors = {} for key, val in itertools.chain(iter(config.items()), iter(kwargs.items())): if key.startswith('traceback.'): self.traceback_colors[key[len('traceback.'):]] = val self.logger = logging.getLogger(__name__) self.loglevel = getattr(logging, loglevel) self.keep_tracebacks = asbool(kwargs.get( 'keep_tracebacks', config.get( 'keep_tracebacks', RequestHandler.keep_tracebacks))) self.keep_tracebacks_limit = int(kwargs.get( 'keep_tracebacks_limit', config.get( 'keep_tracebacks_limit', RequestHandler.keep_tracebacks_limit))) self.skip_first_n_frames = int(kwargs.get( 'skip_first_n_frames', config.get( 'skip_first_n_frames', RequestHandler.skip_first_n_frames))) self.skip_last_n_frames = int(kwargs.get( 'skip_last_n_frames', config.get( 'skip_last_n_frames', RequestHandler.skip_last_n_frames))) self.stack_formatter = kwargs.get( 'stack_formatter', config.get( 'stack_formatter', RequestHandler.stack_formatter)) self.tb_formatter = kwargs.get( 'tb_formatter', config.get( 'tb_formatter', RequestHandler.tb_formatter)) reqhandler = RequestHandler() reqhandler.setLevel(self.loglevel) reqhandler.keep_tracebacks = self.keep_tracebacks reqhandler.keep_tracebacks_limit = self.keep_tracebacks_limit reqhandler.skip_first_n_frames = self.skip_first_n_frames reqhandler.skip_last_n_frames = self.skip_last_n_frames if self.stack_formatter: reqhandler.stack_formatter = self._resolve(self.stack_formatter) if self.tb_formatter: reqhandler.tb_formatter = self._resolve(self.tb_formatter) logging.getLogger('').addHandler(reqhandler) self.reqhandler = reqhandler
def check_true(self, value): self.assertTrue(asbool(value), repr(value))
def check_false(self, value): self.assertFalse(asbool(value), repr(value))
def __init__(self, app, config=None, loglevel='DEBUG', **kwargs): """Stores logging statements per request, and includes a bar on the page that shows the logging statements ''loglevel'' Default log level for messages that should be caught. Note: the root logger's log level also matters! If you do logging.getLogger('').setLevel(logging.INFO), no DEBUG messages will make it to Logview's handler anyway. Config can contain optional additional loggers and the colors they should be highlighted (in an ini file):: logview.sqlalchemy = #ff0000 Or if passing a dict:: app = Logview(app, {'logview.sqlalchemy':'#ff0000'}) """ if config is None: config = {} self.app = app tmpl_dir = os.path.join(here_dir, 'templates') self.mako = TemplateLookup(directories=[tmpl_dir], default_filters=['h']) self.log_colors = {} for key, val in itertools.chain(iter(config.items()), iter(kwargs.items())): if key.startswith('logview.'): self.log_colors[key[len('logview.'):]] = val self.traceback_colors = {} for key, val in itertools.chain(iter(config.items()), iter(kwargs.items())): if key.startswith('traceback.'): self.traceback_colors[key[len('traceback.'):]] = val self.logger = logging.getLogger(__name__) self.loglevel = getattr(logging, loglevel) self.keep_tracebacks = asbool( kwargs.get( 'keep_tracebacks', config.get('keep_tracebacks', RequestHandler.keep_tracebacks))) self.keep_tracebacks_limit = int( kwargs.get( 'keep_tracebacks_limit', config.get('keep_tracebacks_limit', RequestHandler.keep_tracebacks_limit))) self.skip_first_n_frames = int( kwargs.get( 'skip_first_n_frames', config.get('skip_first_n_frames', RequestHandler.skip_first_n_frames))) self.skip_last_n_frames = int( kwargs.get( 'skip_last_n_frames', config.get('skip_last_n_frames', RequestHandler.skip_last_n_frames))) self.stack_formatter = kwargs.get( 'stack_formatter', config.get('stack_formatter', RequestHandler.stack_formatter)) self.tb_formatter = kwargs.get( 'tb_formatter', config.get('tb_formatter', RequestHandler.tb_formatter)) reqhandler = RequestHandler() reqhandler.setLevel(self.loglevel) reqhandler.keep_tracebacks = self.keep_tracebacks reqhandler.keep_tracebacks_limit = self.keep_tracebacks_limit reqhandler.skip_first_n_frames = self.skip_first_n_frames reqhandler.skip_last_n_frames = self.skip_last_n_frames if self.stack_formatter: reqhandler.stack_formatter = self._resolve(self.stack_formatter) if self.tb_formatter: reqhandler.tb_formatter = self._resolve(self.tb_formatter) logging.getLogger('').addHandler(reqhandler) self.reqhandler = reqhandler