summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2014-10-27 12:09:35 +0000
committerelie <elie>2014-10-27 12:09:35 +0000
commit61d9975ab596676eadb600f4d50a3cd72ca34c57 (patch)
treeebd401ead677d68d583d1eb5e89c5feec5386428
parent28cdc98c04bef6336a398cb496ebd3025a2ba800 (diff)
downloadpyasn1-61d9975ab596676eadb600f4d50a3cd72ca34c57.tar.gz
* added support for logging into parent application's logger
* use logging framework for timestamps generation
-rw-r--r--pyasn1/debug.py32
1 files 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):