logging.warning
просто регистрирует что-то на уровне WARNING
, точно так же, как logging.info
регистрирует на уровне INFO
и logging.error
регистрирует на уровне ERROR
. У него нет особого поведения.
warnings.warn
испускает Warning
, который может быть напечатан в stderr
, полностью проигнорирован или выдан как обычный Exception
(потенциально может привести к сбою приложения) в зависимости от точного выделенного подкласса Warning
и от того, как вы настроили Warnings Filter . По умолчанию предупреждения выводятся на stderr
или игнорируются.
Предупреждения, испускаемые warnings.warn
, часто полезно знать, но их легко пропустить (особенно если вы запускаете программу Python в фоновом режиме и не захватывает stderr
). По этой причине может быть полезно зарегистрировать их. Python предоставляет встроенную интеграцию между модулем logging
и модулем warnings
, чтобы позволить вам сделать это; просто позвоните logging.captureWarnings(True)
в начале вашего скрипта, и все предупреждения, выданные модулем warnings
, будут автоматически регистрироваться на уровне WARNING
.