From 61d9975ab596676eadb600f4d50a3cd72ca34c57 Mon Sep 17 00:00:00 2001 From: elie Date: Mon, 27 Oct 2014 12:09:35 +0000 Subject: * added support for logging into parent application's logger * use logging framework for timestamps generation --- pyasn1/debug.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/pyasn1/debug.py b/pyasn1/debug.py index e9ff719..9a79f20 100644 --- a/pyasn1/debug.py +++ b/pyasn1/debug.py @@ -23,7 +23,7 @@ class Printer: if handler is None: handler = logging.StreamHandler() if formatter is None: - formatter = logging.Formatter('%(name)s: %(message)s') + formatter = logging.Formatter('%(asctime)s %(name)s: %(message)s') handler.setFormatter(formatter) handler.setLevel(logging.DEBUG) logger.addHandler(handler) @@ -40,20 +40,34 @@ class Debug: self._printer = options.get('printer') elif self.defaultPrinter is not None: self._printer = self.defaultPrinter + if 'loggerName' in options: + # route our logs to parent logger + self._printer = Printer( + logger=logging.getLogger(options['loggerName']), + handler=logging.NullHandler() + ) else: self._printer = Printer() self('running pyasn1 version %s' % __version__) for f in flags: - if f not in flagMap: - raise error.PyAsn1Error('bad debug flag %s' % (f,)) - self._flags = self._flags | flagMap[f] - self('debug category \'%s\' enabled' % f) - + inverse = f and f[0] in ('!', '~') + if inverse: + f = f[1:] + try: + if inverse: + self._flags &= ~flagMap[f] + else: + self._flags |= flagMap[f] + except KeyError: + raise error.PyAsn1Error('bad debug flag %s' % f) + + self('debug category \'%s\' %s' % (f, inverse and 'disabled' or 'enabled')) + def __str__(self): return 'logger %s, flags %x' % (self._printer, self._flags) def __call__(self, msg): - self._printer('[%s]: %s' % (self.timestamp(), msg)) + self._printer(msg) def __and__(self, flag): return self._flags & flag @@ -61,10 +75,6 @@ class Debug: def __rand__(self, flag): return flag & self._flags - def timestamp(self): - return time.strftime('%H:%M:%S', time.localtime()) + \ - '.%.3d' % int((time.time() % 1) * 1000) - logger = 0 def setLogger(l): -- cgit v1.2.1