| 58 | defaultPrinter = Printer() |
| 59 | |
| 60 | def __init__(self, *flags, **options): |
| 61 | self._flags = DEBUG_NONE |
| 62 | |
| 63 | if 'loggerName' in options: |
| 64 | # route our logs to parent logger |
| 65 | self._printer = Printer( |
| 66 | logger=logging.getLogger(options['loggerName']), |
| 67 | handler=logging.NullHandler() |
| 68 | ) |
| 69 | |
| 70 | elif 'printer' in options: |
| 71 | self._printer = options.get('printer') |
| 72 | |
| 73 | else: |
| 74 | self._printer = self.defaultPrinter |
| 75 | |
| 76 | self._printer('running pyasn1 %s, debug flags %s' % (__version__, ', '.join(flags))) |
| 77 | |
| 78 | for flag in flags: |
| 79 | inverse = flag and flag[0] in ('!', '~') |
| 80 | if inverse: |
| 81 | flag = flag[1:] |
| 82 | try: |
| 83 | if inverse: |
| 84 | self._flags &= ~FLAG_MAP[flag] |
| 85 | else: |
| 86 | self._flags |= FLAG_MAP[flag] |
| 87 | except KeyError: |
| 88 | raise error.PyAsn1Error('bad debug flag %s' % flag) |
| 89 | |
| 90 | self._printer("debug category '%s' %s" % (flag, inverse and 'disabled' or 'enabled')) |
| 91 | |
| 92 | def __str__(self): |
| 93 | return 'logger %s, flags %x' % (self._printer, self._flags) |