You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何停止Python http.server模块HTTPServer服务的日志输出

问题根本原因
  • BaseHTTPRequestHandler 的日志输出没有使用Python标准logging模块,是自带的log_message方法直接打印到标准错误流,因此调整logging级别无法拦截日志
  • 原有代码中日志级别设置的代码写在了阻塞方法httpd.serve_forever()之后,这行代码永远不会被执行,本身就不生效
修复方案

推荐通过重写请求处理类的log_message方法屏蔽日志,不会影响其他功能的正常输出,代码示例如下:

from http.server import HTTPServer, BaseHTTPRequestHandler
import threading

# 自定义无日志的请求处理类
class NoLogRequestHandler(BaseHTTPRequestHandler):
    def log_message(self, format, *args):
        # 空实现,不输出任何日志
        pass

def server_run():
    # 使用自定义的无日志Handler初始化服务
    httpd = HTTPServer(('localhost', 4443), NoLogRequestHandler)
    httpd.serve_forever()

threading.Thread(target=server_run).start()
print("Server running")

如果不需要保留其他stderr输出,也可以选择临时重定向标准错误流到空设备实现屏蔽:

from http.server import HTTPServer, BaseHTTPRequestHandler
import threading
import sys
import os

def server_run():
    sys.stderr = open(os.devnull, 'w')
    httpd = HTTPServer(('localhost', 4443), BaseHTTPRequestHandler)
    httpd.serve_forever()

threading.Thread(target=server_run).start()
print("Server running")

内容的提问来源于stack exchange,提问作者Michi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:15:01