2015-07-15 12 views
6

Gram z wsgiref.simple_server, aby poznać świat serwerów internetowych.
Chciałbym kontrolować wygenerowany dziennik, ale nie mogłem znaleźć nic na ten temat w Python's documentation.Kontrola wsgiref prosty_serwer log

Mój kod wygląda następująco:

from wsgiref.simple_server import make_server 

def application(environ, start_response): 
    start_response('200 OK', headers) 
    return ['Hello World'] 

httpd = make_server('', 8000, application) 
httpd.serve_forever() 

Odpowiedz

10

wsgiref.simple_server.make_server domyślnie tworzy WSGIServer z WSGIRequestHandler:

def make_server(
    host, port, app, server_class=WSGIServer, handler_class=WSGIRequestHandler): 
    """Create a new WSGI server listening on `host` and `port` for `app`""" 
    server = server_class((host, port), handler_class) 
    server.set_app(app) 
    return server 

WSGIRequestHandler tutaj rozciąga się od BaseHTTPServer.BaseHTTPRequestHandler, gdzie magia rejestrowanie okazuje się być:

def log_message(self, format, *args): 
    sys.stderr.write("%s - - [%s] %s\n" % 
        (self.client_address[0], 
         self.log_date_time_string(), 
         format%args)) 

Więc loguje się do stderr, właściwie nie pyta modułu logowania. Można to zmienić w swoim własnym obsługi:

class NoLoggingWSGIRequestHandler(WSGIRequestHandler): 

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

I zdać niestandardowej obsługi do serwera Zamiast:

httpd = make_server('', 8000, application, handler_class=NoLoggingWSGIRequestHandler)