2010-08-02 27 views
38

我正在寫一個簡單的http服務器作爲我的項目的一部分。以下是我的腳本的骨架:如何靜默/靜默HTTPServer和BasicHTTPRequestHandler的stderr輸出?

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler 

class MyHanlder(BaseHTTPRequestHandler): 
    def do_GET(self): 
     self.send_response(200) 
     self.send_header('Content-type', 'text/html') 
     self.end_headers() 
     self.wfile.write('<html><body><p>OK</p></body></html>') 

httpd = HTTPServer(('', 8001), MyHanlder) 
httpd.serve_forever() 

我的問題:如何禁止每次客戶端連接到我的服務器時腳本產生的stderr日誌輸出?

我已經查看了HTTPServer類,直到它的父級,但無法找到任何標誌或函數調用來實現此目的。我也看了一下BaseHTTPRequestHandler類,但是找不到線索。我相信肯定有辦法。如果你這樣做,請與我和其他人分享;我感謝你的努力。

回答

84

這可能會做到這一點:

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler 

class MyHandler(BaseHTTPRequestHandler): 
    def do_GET(self): 
     self.send_response(200) 
     self.send_header('Content-type', 'text/html') 
     self.end_headers() 
     self.wfile.write('<html><body><p>OK</p></body></html>') 
    def log_message(self, format, *args): 
     return 

httpd = HTTPServer(('', 8001), MyHandler) 
httpd.serve_forever() 
+0

MattH:您的解決方案完美的作品。謝謝。 – 2010-08-02 16:36:54

+0

這讓我頭疼,因爲我的httpserver在沒有tty的情況下在後臺運行時沒有返回任何東西。你是一個拯救生命的人。謝謝! – agressen 2015-04-29 07:41:31