У меня была та же проблема, что и у исходного постера: я хотел выйти из скрипта Python с кодом ошибки, если были зарегистрированы какие-либо сообщения об ошибках или более серьезной степени тяжести.Для моего приложения желательно, чтобы выполнение продолжалось до тех пор, пока не возникнут необработанные исключения.Тем не менее, если в журнале регистрируются какие-либо ошибки, сборки непрерывных интеграций не будут работать.
Я нашел пакет errorhandler
python, который делает то, что нам нужно.См. GitHub , PyPI-страницу и документы .
Ниже приведен код, который я использовал:
import logging
import sys
import errorhandler
# Track if message gets logged with severity of error or greater
error_handler = errorhandler.ErrorHandler()
# Also log to stderr
stream_handler = logging.StreamHandler(stream=sys.stderr)
logger = logging.getLogger()
logger.setLevel(logging.INFO) # Set whatever logging level for stderr
logger.addHandler(stream_handler)
# Do your program here
if error_handler.fired:
logger.critical('Failure: exiting with code 1 due to logged errors')
raise SystemExit(1)