35 lines
1.1 KiB
Python
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) |