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 |