【问题标题】:How to suppress web.py output?如何抑制 web.py 输出?
【发布时间】:2018-08-14 21:01:13
【问题描述】:

我正在尝试抑制控制台的 web.py 输出。我不希望将所有输​​出抑制到 stderr 或重定向输出,而只是阻止它将以下语句打印到控制台。

127.0.0.1:57691 - - [06/Mar/2018 22:25:43] "HTTP/1.1 GET /api/getDimensionColumnConstraints" - 200 OK

我尝试将web.config.debug = False 语句添加为我的main() 函数的第一行,它仍然会为每个API 调用打印此内容。

【问题讨论】:

  • 如果您不想将输出重定向到您希望它去哪里?
  • 这可能会有所帮助:webpy.org/cookbook/logging
  • logging.captureWarnings(True)
  • @I'L'I 首先我不希望有输出。我觉得这是不可能的,所以我唯一的选择是重定向它。
  • 我想反其道而行之!它没有给我任何关于错误消息的输出,并试图让它给我一些..

标签: python python-3.x terminal stderr web.py


【解决方案1】:

web.py 的内置服务器默认将 HTTP 信息和其他错误发送到 stderr。我和你在一起——我想要错误,但不想要所有的 HTTP 语句。

所以,这就是你可以做的。

  1. 创建自定义记录器

  2. 在记录器中拦截调用,丢弃与模式匹配的日志记录。

没那么难,你会创建一个基本的 wsgi 应用程序中间件来拦截:

import logging
class Log:
    def __init__(self, xapp, logname="wsgi"):
        class O:
            def __init__(self, xapp, logname="wsgi"):
                self.logger = logging.getLogger(logname)
            def write(self, s):
                if s[-1] == '\n':
                    s = s[:-1]
                if s == "":
                    return
                if self.ignore(s):
                    return
                self.logger.debug(s)
        self.app = xapp
        self.f = O(logname)
    def __call__(self, environ, start_response):
        environ['wsgi.errors'] = self.f
        return self.app(environ, start_response)

将该中间件添加到应用程序的__main__ 初始化中。你可能有类似的东西:

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

更改run()添加中间件:

    app.run(Log)

现在是第二部分。看到上面 O.write() 中的self.ignore(s) 了吗?使用它来决定处理或忽略日志记录语句,例如我这样做:

def ignore(self, s):
    if not all([web.config.get('debug_http', False),
               any(['"HTTP/1.1 GET ' in s,
                    '"HTTP/1.1 POST ' in s])]):
        return True
    return False

这基本上是说如果要打印的字符串包含“HTTP ...”,请忽略它。我已将检查添加到全局标志“debug_http”,它允许我设置它(某处、任何地方、无论如何)以启用/禁用此项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多