【问题标题】:SQL Server Agent not to catch stderr/stdout from pythonSQL Server 代理不从 python 捕获 stderr/stdout
【发布时间】:2020-06-01 05:32:16
【问题描述】:

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

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

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

sys.exit(1)

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

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

【问题讨论】:

    标签: python sql-server exception logging agent


    【解决方案1】:

    回答: SQL 代理只获取 sys.stderr 输出。 您需要覆盖 sys.stderr 或使用 sys.excepthook 和自定义函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      相关资源
      最近更新 更多