BaseHTTPRequestHandler.log_message() prints all log messages, writing sys.stderr . You have two options:
1) Continue to use BaseHTTPRequestHandler.log_message() , but change the sys.stderr value:
import SimpleHTTPServer import SocketServer PORT = 1548 Handler = SimpleHTTPServer.SimpleHTTPRequestHandler httpd = SocketServer.TCPServer(("", PORT), Handler) print "serving at port", PORT import sys buffer = 1 sys.stderr = open('logfile.txt', 'w', buffer) httpd.serve_forever()
2) Create a new xxxRequestHandler class by replacing .log_message() :
import SimpleHTTPServer import SocketServer import sys PORT = 1548 class MyHTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): buffer = 1 log_file = open('logfile.txt', 'w', buffer) def log_message(self, format, *args): self.log_file.write("%s - - [%s] %s\n" % (self.client_address[0], self.log_date_time_string(), format%args)) Handler = MyHTTPHandler httpd = SocketServer.TCPServer(("", PORT), Handler) print "serving at port", PORT httpd.serve_forever()
source share