Source: bactoscoop/logging_utils.pyΒΆ

 1import logging
 2import os
 3import sys
 4
 5from tqdm import tqdm
 6
 7
 8LOGGER_NAME = "logger"
 9LOG_FORMAT = "%(asctime)s [%(levelname)s] %(message)s"
10
11
12def _resolve_log_level(level_name):
13    return getattr(logging, str(level_name).upper(), logging.INFO)
14
15
16def get_bactoscoop_logger():
17    logger = logging.getLogger(LOGGER_NAME)
18
19    if not logger.handlers:
20        handler = logging.StreamHandler(sys.stdout)
21        handler.setFormatter(logging.Formatter(LOG_FORMAT))
22        logger.addHandler(handler)
23        logger.propagate = False
24
25    logger.setLevel(_resolve_log_level(os.environ.get("BACTOSCOOP_LOG_LEVEL", "INFO")))
26    return logger
27
28
29def configure_bactoscoop_logging(level="INFO"):
30    os.environ["BACTOSCOOP_LOG_LEVEL"] = str(level).upper()
31    logger = get_bactoscoop_logger()
32    logger.setLevel(_resolve_log_level(level))
33    return logger
34
35
36def tqdm_if_verbose(iterable, **kwargs):
37    kwargs.setdefault(
38        "disable",
39        not get_bactoscoop_logger().isEnabledFor(logging.INFO),
40    )
41    return tqdm(iterable, **kwargs)