SQL Серверный агент не перехватывает stderr / stdout из python - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть задание CmdExe c в SQL Агент, который запускает приложение Python. Python сам записывает JSON отформатированные журналы в файлы, а затем служба Filebeat передает эти журналы в Elasti c.

Все работает нормально, если мы обработали исключение или системный выход в сценарии Python:

try:
    #something
except Exception:
    logging.exception("Some exception")

или

sys.exit(1)

Проблема начинается при сбое сценария с необработанным исключением. SQL Агент в этом случае перехватывает выходные данные, записывает трассировку стека во внутреннюю таблицу msdb и ничего не выводит в файлы журнала (и, как результат, в Filebeat + Elasti c).

Вы когда-нибудь сталкивались? такая вещь? Как продублировать / сохранить эту ошибку в лог-файле?

1 Ответ

0 голосов
/ 30 апреля 2020

Ответ: SQL Агент просто получает вывод sys.stderr. Вам нужно либо переопределить sys.stderr, либо использовать sys.excepthook с пользовательской функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...