2015-07-15 1 views
6

Je joue avec wsgiref.simple_server pour étudier le monde des serveurs Web.
Je voudrais contrôler le journal généré, mais je n'ai rien trouvé à ce sujet dans Python's documentation.Contrôle wsgiref simple_server log

Mon code ressemble à ceci:

par défaut
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() 

Répondre

10

wsgiref.simple_server.make_server crée un WSGIServer avec 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 étend ici de BaseHTTPServer.BaseHTTPRequestHandler, où la magie de l'exploitation forestière se révèle être:

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

Donc, il se connecte à stderr, en fait, pas au module de journalisation python. Vous pouvez remplacer dans votre propre gestionnaire:

class NoLoggingWSGIRequestHandler(WSGIRequestHandler): 

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

Et passez votre gestionnaire personnalisé au serveur à la place:

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