Completed
Push — master ( 4d3455...bf0e43 )
by Michael
57s
created

configure_logger()   B

Complexity

Conditions 2

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
3
import logging
4
import sys
5
6
LOG_LEVELS = {
7
    'DEBUG': logging.DEBUG,
8
    'INFO': logging.INFO,
9
    'WARNING': logging.WARNING,
10
    'ERROR': logging.ERROR,
11
    'CRITICAL': logging.CRITICAL,
12
}
13
14
LOG_FORMATS = {
15
    'DEBUG': u'%(levelname)s %(name)s: %(message)s',
16
    'INFO': u'%(levelname)s: %(message)s',
17
}
18
19
20
def configure_logger(stream_level='DEBUG', debug_file=None):
21
    # Set up 'cookiecutter' logger
22
    logger = logging.getLogger('cookiecutter')
23
    logger.setLevel(logging.DEBUG)
24
25
    # Remove all attached handlers, in case there was
26
    # a logger with using the name 'cookiecutter'
27
    del logger.handlers[:]
28
29
    # Create a file handler if a log file is provided
30
    if debug_file is not None:
31
        debug_formatter = logging.Formatter(LOG_FORMATS['DEBUG'])
32
        file_handler = logging.FileHandler(debug_file)
33
        file_handler.setLevel(LOG_LEVELS['DEBUG'])
34
        file_handler.setFormatter(debug_formatter)
35
        logger.addHandler(file_handler)
36
37
    # Get settings based on the given stream_level
38
    log_formatter = logging.Formatter(LOG_FORMATS[stream_level])
39
    log_level = LOG_LEVELS[stream_level]
40
41
    # Create a stream handler
42
    stream_handler = logging.StreamHandler(stream=sys.stdout)
43
    stream_handler.setLevel(log_level)
44
    stream_handler.setFormatter(log_formatter)
45
    logger.addHandler(stream_handler)
46
47
    return logger
48