Files
toolbox/utils/loggers.py
T

35 lines
1.1 KiB
Python

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)