SQL Server代理不从python捕获stderr / stdout

问题描述 投票:0回答:1

我在运行Python应用程序的SQL Agent中有一个CmdExec作业。 Python本身将JSON格式的日志写入文件,然后Filebeat服务将这些日志传输到Elastic。

如果我们在Python脚本中处理了异常或系统退出,一切都会正常运行:

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

sys.exit(1)

当脚本因未处理的异常而失败时,问题开始。在这种情况下,SQL Agent捕获输出,将堆栈跟踪写入内部msdb表,并且不输出任何内容到日志文件(结果不输出到Filebeat + Elastic)。

您曾经遇到过这样的事情吗?如何在日志文件中重复/保留此错误?

python sql-server exception logging agent
1个回答
0
投票

答案:SQL Agent仅获得sys.stderr输出。您需要覆盖sys.stderr或将sys.excepthook与自定义功能一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.