Динамически установить уровень входа Sani c в Python - PullRequest
1 голос
/ 16 января 2020

Я выставил маршрут в моем приложении Sani c, чтобы установить уровень журнала на основе клиентского вызова. Например,

from sanic.log import logger, logging

@route("/main")
async def sanic_main(request):
    logger.info("Info mesg")
    logger.debug("Debug mesg")

    return json("processed")

@route("/setlevel")
async def setlevel(request):
    level = request.json["level"]
    if level == "info":
         loglevel = logging.INFO
    elif level == "debug":
         loglevel = logging.DEBUG
    logger.setLevel(loglevel)

    return json("done")

При настройке уровней журнала между DEBUG и INFO, однако, я наблюдаю нестабильное поведение, когда сообщения DEBUG (из "/ main") печатаются только несколько раз, и наоборот.

ПРИМЕЧАНИЕ: у меня работает несколько Sani c рабочих

Как мне go о динамической настройке уровня журнала?

1 Ответ

1 голос
/ 16 января 2020

Я никогда не делал ничего подобного, но sanic.log.logger это просто экземпляр <class 'logging.Logger'>. Таким образом, использование setLevel должно быть хорошо.

Вопрос в том, как вы запускаете свое приложение и сколько рабочих вы используете? Если вы находитесь в ситуации, когда у вас есть несколько процессов, то использование /setlevel изменит только регистратор для этого одного процесса.

...