【问题标题】:Where to see stdout if I use mod_wsgi to serve application?如果我使用 mod_wsgi 为应用程序提供服务,在哪里可以看到标准输出?
【发布时间】:2012-12-18 13:37:39
【问题描述】:

有时我需要检查 python 网络应用程序的输出。

如果我直接执行应用程序,我可以从终端屏幕上看到它。

但我不知道如何检查 mod_wsgi。它会出现在apache 的单独日志中吗?还是我需要为logging添加一些代码?

【问题讨论】:

    标签: python django apache mod-wsgi pyramid


    【解决方案1】:

    声称可移植的 WSGI 应用程序组件不应写入标准输出。也就是说,如果没有将输出定向到某个备用流,应用程序不应使用 Python 打印语句。应用程序也不应该直接写入 sys.stdout。 (ModWSGI Wiki)

    所以不要...相反,我建议使用像sentry 这样的日志聚合工具。它在开发时很有用,并且是生产中的必备品。

    【讨论】:

      【解决方案2】:

      wsgilog 很简单,可以自动为您将标准输出重定向到日志文件。轻松设置,我没有遇到任何实际问题。

      【讨论】:

        【解决方案3】:

        你可以用sys.stderr.write("message")代替print "message"

        使用StreamHandler 登录到标准错误:

        import logging
        handler = logging.StreamHandler(stream=sys.stderr)
        log = logging.getLogger(__name__)
        log.setLevel(logging.INFO)
        log.addHandler(handler)
        
        log.info("Message")
        

        【讨论】:

        • @AnthonyPerot-Rajan 恐怕我不知道 - 我没用过 Pyramid
        猜你喜欢
        • 1970-01-01
        • 2012-08-03
        • 2022-08-14
        • 2017-12-18
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        相关资源
        最近更新 更多