Conditions | 1 |
Total Lines | 39 |
Code Lines | 13 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | """Module for logger.""" |
||
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 |