Completed
Push — master ( 6e23b2...bd66a8 )
by Jace
18s
created

log.helpers   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 30
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 11

2 Functions

Rating   Name   Duplication   Size   Complexity  
B init() 0 19 6
A silence() 0 12 5
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