| Total Complexity | 11 |
| Total Lines | 45 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | """Wrappers to eliminate boilerplate `logging` activities.""" |
||
| 2 | |||
| 3 | import logging |
||
| 4 | |||
| 5 | |||
| 6 | DEFAULT_LEVEL = logging.INFO |
||
| 7 | DEFAULT_FORMAT = "%(levelname)s: %(name)s: %(message)s" |
||
| 8 | |||
| 9 | initialized = False |
||
| 10 | |||
| 11 | |||
| 12 | def init(*, reset=False, debug=False, **kwargs): |
||
| 13 | if reset: |
||
| 14 | for handler in logging.root.handlers[:]: |
||
| 15 | logging.root.removeHandler(handler) |
||
| 16 | |||
| 17 | custom_format = kwargs.get('format') |
||
| 18 | default_level = logging.DEBUG if debug else DEFAULT_LEVEL |
||
| 19 | |||
| 20 | kwargs['level'] = kwargs.get('level', default_level) |
||
| 21 | kwargs['format'] = kwargs.get('format', DEFAULT_FORMAT) |
||
| 22 | logging.basicConfig(**kwargs) |
||
| 23 | |||
| 24 | if custom_format: |
||
| 25 | formatter = logging.Formatter(custom_format) |
||
| 26 | for handler in logging.root.handlers: |
||
| 27 | handler.setFormatter(formatter) |
||
| 28 | |||
| 29 | global initialized |
||
| 30 | initialized = True |
||
| 31 | |||
| 32 | |||
| 33 | def silence(*names, allow_info=False, allow_warning=False, allow_error=False): |
||
| 34 | if allow_info: |
||
| 35 | level = logging.INFO |
||
| 36 | elif allow_warning: |
||
| 37 | level = logging.WARNING |
||
| 38 | elif allow_error: |
||
| 39 | level = logging.ERROR |
||
| 40 | else: |
||
| 41 | level = logging.CRITICAL |
||
| 42 | |||
| 43 | for name in names: |
||
| 44 | logging.getLogger(name).setLevel(level) |
||
| 45 |