Я пишу навык Alexa на Python, используя несколько модулей, и хочу глобально установить уровень и формат ведения журнала, чтобы мне не приходилось делать это в каждом модуле. Документация и другие ответы о переполнении стека показали мне, что способ сделать это - установить конфигурацию в корневом обработчике ведения журнала. Тем не менее, это не работает. Например, в настоящее время у меня есть этот блок кода в качестве первого кода, который выполняется в моей функции верхнего уровня:
logging.basicConfig(level='DEBUG'),
format="[ %(levelname)s ] %(asctime)s [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
logger = logging.getLogger(__name__)
logger.warning('Test')
logger.info('Test')
logger.debug('Test')
При тестировании (используя py.test
, если это актуально), я получаю следующий вывод:
------------------------ Captured log call -------------------------
lambda_handler.py 18 WARNING Test
Как видите, журналы уровня info
- и debug
не обрабатываются, и формат не был применен. То же самое происходит, когда я тестирую на месте в своей функции AWS Lambda.
Однако, чтобы еще больше запутать ситуацию, когда я запускаю вышеуказанный блок кода в консоли Python моей IDE, я получаю ожидаемое поведение:
[ WARNING ] 2019-03-23 08:20:31 [__main__] Test
[ INFO ] 2019-03-23 08:20:31 [__main__] Test
[ DEBUG ] 2019-03-23 08:20:31 [__main__] Test
Я искал всю свою кодовую базу, и нет случая, чтобы эта конфигурация была переопределена, поэтому я в растерянности. Вся документация и форумы указывают мне на этот подход , и он даже работает в чистом контексте , но он просто не работает, когда мне это нужно. Чего мне не хватает?