我在运行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)。
您曾经遇到过这样的事情吗?如何在日志文件中重复/保留此错误?
答案:SQL Agent仅获得sys.stderr输出。您需要覆盖sys.stderr或将sys.excepthook与自定义功能一起使用。