summaryrefslogtreecommitdiff
path: root/pysnmp/debug.py
diff options
context:
space:
mode:
authorelie <elie>2014-10-26 16:16:09 +0000
committerelie <elie>2014-10-26 16:16:09 +0000
commit0e74a790623de2b1f1ef699eee77786b1afa8d3e (patch)
tree082fbc68496e22a24fa3e1bc021ece685950eb71 /pysnmp/debug.py
parentdfec7984e1a92bfd915a6217f42a508a900aa4d6 (diff)
downloadpysnmp-git-0e74a790623de2b1f1ef699eee77786b1afa8d3e.tar.gz
built-in debugging is now based on Python logging module
Diffstat (limited to 'pysnmp/debug.py')
-rw-r--r--pysnmp/debug.py34
1 files changed, 27 insertions, 7 deletions
diff --git a/pysnmp/debug.py b/pysnmp/debug.py
index 911a4b7c..83f92bfb 100644
--- a/pysnmp/debug.py
+++ b/pysnmp/debug.py
@@ -1,5 +1,5 @@
-import sys
import time
+import logging
from pyasn1.compat.octets import octs2ints
from pysnmp import error
from pysnmp import __version__
@@ -31,13 +31,33 @@ flagMap = {
'all': flagAll
}
+class Printer:
+ def __init__(self, logger=None, handler=None, formatter=None):
+ if logger is None:
+ logger = logging.getLogger('pysnmp')
+ logger.setLevel(logging.DEBUG)
+ if handler is None:
+ handler = logging.StreamHandler()
+ if formatter is None:
+ formatter = logging.Formatter('%(name)s: %(message)s')
+ handler.setFormatter(formatter)
+ handler.setLevel(logging.DEBUG)
+ logger.addHandler(handler)
+ self.__logger = logger
+
+ def __call__(self, msg): self.__logger.debug(msg)
+ def __str__(self): return '<python built-in logging>'
+
class Debug:
- defaultPrinter = sys.stderr and sys.stderr.write or None
- def __init__(self, *flags):
+ defaultPrinter = None
+ def __init__(self, *flags, **options):
self._flags = flagNone
- if not self.defaultPrinter:
- raise error.PySnmpError('Null debug writer specified')
- self._printer = self.defaultPrinter
+ if options.get('printer') is not None:
+ self._printer = options.get('printer')
+ elif self.defaultPrinter is not None:
+ self._printer = self.defaultPrinter
+ else:
+ self._printer = Printer()
self('running pysnmp version %s' % __version__)
for f in flags:
inverse = f and f[0] in ('!', '~')
@@ -57,7 +77,7 @@ class Debug:
return 'logger %s, flags %x' % (self._printer, self._flags)
def __call__(self, msg):
- self._printer('DBG: [%s]: %s\n' % (self.timestamp(), msg))
+ self._printer('[%s]: %s' % (self.timestamp(), msg))
def __and__(self, flag):
return self._flags & flag