Files

49 lines
1.3 KiB
Python

import logging
import logging.config
import json
from pathlib import Path
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")
log_config_path = Path("config/log.ini")
logging.config.fileConfig(log_config_path, disable_existing_loggers=False)
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)