首页 > 解决方案 > 如何避免 http.server 的控制台日志记录

问题描述

http.server在我的代码中运行以加载本地 html,但我不希望服务器在每次发出请求时都登录控制台。

我查看了这篇文章: 如何使 HTTPServer 和 BasicHTTPRequestHandler 的 stderr 输出静默/安静?

并尝试了它,但它返回一个错误:missing 3 required positional arguments

class main()
    def openHttpServer(self):
        port = 8000
        Handler = http.server.SimpleHTTPRequestHandler
        self.httpd = socketserver.TCPServer(("", port), Handler)
        self.httpd.serve_forever()

我希望它可以正常工作,但没有SimpleHTTPRequestHandler登录控制台。

标签: pythonpython-3.x

解决方案


我按照几个帖子中的建议通过子类修复它

所以,如果我现在使用它http.server.SimpleHTTPRequestHandler作为Handler子类在这里传递:

class quietServer(http.server.SimpleHTTPRequestHandler):

log_message只需为with编写函数,pass这样它就不会返回登录请求。

def log_message(self, format, *args):
        pass

所以整个代码是这样的:

import http.server
import socketserver

PORT = 8080

class quietServer(http.server.SimpleHTTPRequestHandler):
    def log_message(self, format, *args):
        pass

with socketserver.TCPServer(("", PORT), quietServer) as httpd:
    httpd.serve_forever()

推荐阅读