import logging import logging.config import json class SmartLogger(logging.Logger): def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False, stacklevel=2): # Увеличиваем stacklevel до 2, чтобы показать реального вызывающего if isinstance(msg, (dict, list)): msg = json.dumps(msg, indent=4, ensure_ascii=False) super()._log(level, msg, args, exc_info, extra, stack_info, stacklevel) logging.setLoggerClass(SmartLogger) logging.config.fileConfig("config/log.ini") logger = logging.getLogger("toolbox") def setLogLevel(level: str = ""): match level: case "DEBUG": loggerLevel = logging.DEBUG case "WARNING": loggerLevel = logging.WARNING case "ERROR": loggerLevel = logging.ERROR case _: loggerLevel = logging.INFO root_logger = logging.getLogger() for handler in root_logger.handlers: handler.setLevel(loggerLevel) # Также меняем уровень самого логгера logger.setLevel(loggerLevel)