Passed
Branch main (46851d)
by Yunguan
02:04
created

deepreg.log.get()   A

Complexity

Conditions 1

Size

Total Lines 39
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 39
rs 9.75
c 0
b 0
f 0
cc 1
nop 1
1
"""Module for logger."""
2
import logging
3
import os
4
import sys
5
6
7
def get(name: str) -> logging.Logger:
8
    """
9
    Configure the logger with formatter and handlers.
10
11
    The logger should be used as:
12
13
    .. code-block:: python
14
15
        from deepreg import log
16
17
        logger = log.get(__name__)
18
19
    The log level depends on the environment variable `DEEPREG_LOG_LEVEL`.
20
21
    - 0: NOTSET, will be set to DEBUG
22
    - 1: DEBUG
23
    - 2: INFO (default)
24
    - 3: WARNING
25
    - 4: ERROR
26
    - 5: CRITICAL
27
28
    https://docs.python.org/3/library/logging.html#levels
29
30
    :param name: module name.
31
    :return: configured logger.
32
    """
33
    logger = logging.getLogger(name=name)
34
    logger.propagate = False
35
    log_level = os.environ.get("DEEPREG_LOG_LEVEL", "2")
36
    log_level_int = max(int(log_level) * 10, 10)
37
    logger.setLevel(log_level_int)
38
    formatter = logging.Formatter(
39
        fmt="%(asctime)s | %(levelname)-8s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
40
    )
41
    stdout_handler = logging.StreamHandler(stream=sys.stdout)
42
    stdout_handler.setFormatter(formatter)
43
    stdout_handler.setLevel(log_level_int)
44
    logger.addHandler(stdout_handler)
45
    return logger
46