summaryrefslogtreecommitdiff
path: root/pysnmp/debug.py
diff options
context:
space:
mode:
authorelie <elie>2006-09-06 16:41:08 +0000
committerelie <elie>2006-09-06 16:41:08 +0000
commit44c43c3614343a7d53fa5e82a97dd2d08488c5e2 (patch)
tree45e52de99564f828226369b2d4669a4c052eca7c /pysnmp/debug.py
parent2068694853ce330a6a582443466638ae78a45e22 (diff)
downloadpysnmp-git-44c43c3614343a7d53fa5e82a97dd2d08488c5e2.tar.gz
re-designed
Diffstat (limited to 'pysnmp/debug.py')
-rw-r--r--pysnmp/debug.py52
1 files changed, 38 insertions, 14 deletions
diff --git a/pysnmp/debug.py b/pysnmp/debug.py
index 1b54f52c..be8faca7 100644
--- a/pysnmp/debug.py
+++ b/pysnmp/debug.py
@@ -1,28 +1,52 @@
import sys
+from pysnmp import error
flagNone = 0x0000
flagIO = 0x0001
flagDsp = 0x0002
flagMP = 0x0004
flagSM = 0x0008
-flagSMI = 0x0010
+flagBld = 0x0010
+flagMIB = 0x0020
+flagIns = 0x0040
flagAll = 0xffff
-logger = None
+flagMap = {
+ 'io': flagIO,
+ 'dsp': flagDsp,
+ 'msgproc': flagMP,
+ 'secmod': flagSM,
+ 'mibbuild': flagBld,
+ 'mibview': flagMIB,
+ 'mibinstrum': flagIns,
+ 'all': flagAll
+ }
-def __defaultLogger(flag, msg):
- if (flags & flag):
- sys.stderr.write('*** [%x] %s\n' % (flag, msg))
+class Debug:
+ defaultPrinter = sys.stderr.write
+ def __init__(self, *flags):
+ self._flags = flagNone
+ self._printer = self.defaultPrinter
+ for f in flags:
+ if not flagMap.has_key(f):
+ raise error.PySnmpError('bad debug flag %s' % f)
+ self._flags = self._flags | flagMap[f]
+ self('debug category %s enabled' % f)
+
+ def __str__(self):
+ return 'logger %s, flags %x' % (self._printer, self._flags)
+
+ def __call__(self, msg):
+ self._printer('DBG: %s\n' % msg)
-def setLogger(f):
- global logger
- logger = f
+ def __and__(self, flag):
+ return self._flags & flag
-flags = flagNone
+ def __rand__(self, flag):
+ return flag & self._flags
-def setFlags(*f):
- global flags, logger
- flags = reduce(lambda x,y: x|y, f, flagNone)
- if flags and not logger:
- logger = __defaultLogger
+logger = Debug()
+def setLogger(l):
+ global logger
+ logger = l