【问题标题】:How can I get back web.py's stdout log when running under Apache/mod_wsgi?在 Apache/mod_wsgi 下运行时如何取回 web.py 的标准输出日志?
【发布时间】:2012-05-03 19:19:21
【问题描述】:

我开发了一个 web.py 应用程序并在独立模式下对其进行了很多测试(从命令行运行 myapp.py),它的 stdout 输出对于调试非常有用。现在我在 Apache/mod_wsgi 下运行它,很多东西都不起作用。例如,我曾经有效的基本身份验证方案总是拒绝它给出的用户名/密码。我需要的第一件事是能够查看我曾经拥有的调试消息。但是找不到脚本的输出。

我怎样才能再次“调试打印”?

在我解决这么多问题之前,我不想询问我应用中的具体问题。

【问题讨论】:

  • 您使用的是什么版本的 mod_wsgi?确保您使用的是 mod_wsgi 3.0+,并且“打印”输出应最终出现在 Apache 错误日志中。

标签: logging python-2.7 mod-wsgi wsgi web.py


【解决方案1】:
>>> class STDOUT(object):
    def __init__(self, next):
        self.next = next
        self.file = open('stdout.txt', 'w')
    def write(self, thing):
        self.file.write(thing)
        l.append(thing)
        self.next.write(thing)

>>> import sys
>>> s = STDOUT(sys.stdout)
>>> sys.stdout = s
>>> l = []
>>> print 4
4
>>> l
['4', '\n']

【讨论】:

  • 在 web.py 中不起作用。我使用了您的代码的精简版本,它不写入“以前的”标准输出,也不附加到内部数组。文件中没有任何内容。
  • 我不明白为什么这不起作用..它多年来一直对我有用。也许会发生一些 ImportError ?你有没有在整个模块周围尝试一下:除了:并在某处写入文件?您可以使用 traceback.print_exc(file= ...) 打印出错误。
猜你喜欢
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
相关资源
最近更新 更多