Ведение журнала с обнимашками и официанткой

#python #logging #wsgi #waitress #hug

#python #ведение журнала #wsgi #официантка #объятия

Вопрос:

Я хочу добавить ведение журнала в мое приложение для Python hug REST. Я не смог найти никакого способа сделать это при обслуживании приложения с помощью hug команды (via hug -f app.py ), поэтому я пытаюсь объединить hug с waitress .

Моя минимальная структура приложения в файле app.py выглядит следующим образом:

 import logging
logger = logging.getLogger(__name__)
import hug
.
.
.
@hug.get()
def func(detail):
    logger.debug("debug func")
    .
    .
    .
 

И я обслуживаю это с помощью скрипта официантки run.py :

 import logging
import waitress

import app

logger = logging.getLogger('waitress')
logger.setLevel(logging.DEBUG)
logger.debug("logger set to DEBUG")

waitress.serve(app.__hug_wsgi__)
 

Когда я выполняю python run.py в консоли, приложение хорошо запускается, и результаты func возвращаются обратно, однако сообщения отладки изнутри func («debug func») и from run.py («logger настроен на ОТЛАДКУ») Я не вижу в консоли.

Что происходит не так и как я могу это исправить? (Я рад использовать другой (с поддержкой Windows) сервер WSGI, если это проще.)

Ответ №1:

Вы должны настроить ведение журнала для logging модуля. Взгляните на документацию для logging.config (в частности dictConfig , и fileConfig ). Для начала, чтобы проверить, работает ли это, вы можете просто вызвать

 logging.basicConfig()
 

app.py перед тем, как вы начнете вести журнал. Это приведет к переходу на вывод всех каналов sys.stderr .

Не забудьте также выполнить logging.setLevel(logging.DEBUG) in app.py , если вы хотите, чтобы там было видно сообщение debug.

Комментарии:

1. Вот и все. Спасибо.