如何避免 http.server 的控制台日志记录

Thr*_*kel 7 python python-3.x

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

我查看了这篇文章: 如何静默/安静 HTTPServer 和 BasicHTTPRequestHandler's 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()
Run Code Online (Sandbox Code Playgroud)

我希望它能以相同的方式工作,但无需SimpleHTTPRequestHandler登录控制台。

Thr*_*kel 11

我按照几篇文章中的建议通过子分类修复了它

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

class quietServer(http.server.SimpleHTTPRequestHandler):

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

def log_message(self, format, *args):
        pass
Run Code Online (Sandbox Code Playgroud)

所以整个代码会是这样的:

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()
Run Code Online (Sandbox Code Playgroud)