diff --git a/qlib/log.py b/qlib/log.py index 26b62e3e8e..85c01d68d2 100644 --- a/qlib/log.py +++ b/qlib/log.py @@ -165,8 +165,72 @@ def filter(self, record): return allow -@contextmanager def set_global_logger_level(level: int): + """set qlib.xxx logger handlers level + + Parameters + ---------- + level: int + logger level + + Examples + --------- + + .. code-block:: python + + import qlib + import logging + from qlib.log import get_module_logger, set_global_logger_level + qlib.init() + + tmp_logger_01 = get_module_logger("tmp_logger_01", level=logging.INFO) + tmp_logger_01.info("1. tmp_logger_01 info show") + + global_level = logging.WARNING + 1 + set_global_logger_level(global_level) + tmp_logger_02 = get_module_logger("tmp_logger_02", level=logging.INFO) + tmp_logger_02.log(msg="2. tmp_logger_02 log show", level=global_level) + + tmp_logger_01.info("3. tmp_logger_01 info do not show") + + """ + qlib_logger = logging.root.manager.loggerDict.get("qlib", None) + if qlib_logger is not None: + for _handler in qlib_logger.handlers: + _handler.level = level + + +@contextmanager +def set_global_logger_level_contextmanager(level: int): + """set qlib.xxx logger handlers level to use contextmanager + + Parameters + ---------- + level: int + logger level + + Examples + --------- + + .. code-block:: python + + import qlib + import logging + from qlib.log import get_module_logger, set_global_logger_level_contextmanager + qlib.init() + + tmp_logger_01 = get_module_logger("tmp_logger_01", level=logging.INFO) + tmp_logger_01.info("1. tmp_logger_01 info show") + + global_level = logging.WARNING + 1 + with set_global_logger_level_contextmanager(global_level): + tmp_logger_02 = get_module_logger("tmp_logger_02", level=logging.INFO) + tmp_logger_02.log(msg="2. tmp_logger_02 log show", level=global_level) + tmp_logger_01.info("3. tmp_logger_01 info do not show") + + tmp_logger_01.info("4. tmp_logger_01 info show") + + """ _handler_level_map = {} qlib_logger = logging.root.manager.loggerDict.get("qlib", None) if qlib_logger is not None: