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)