Ich verwende aiohttp 2 mit Python 3.6 und möchte die Anfragen an die Anwendung zu protokollieren.Protokollanforderungsformat in aiohttp 2 angeben
ich getan habe:
# use ISO timestamps
from time import gmtime
logging.Formatter.converter = gmtime
# create a formatter
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s - %(message)s', '%Y-%m-%dT%H:%M:%S')
ch.setFormatter(formatter)
# show all emssages (default is WARNING)
logging.getLogger('aiohttp.access').setLevel(logging.DEBUG)
# attach the handler
logging.getLogger('aiohttp.access').addHandler(ch)
und jetzt, wenn die Anwendung läuft ich ein Protokoll in diesem Format erhalten:
2017-04-19T16:02:17 INFO aiohttp.access - 127.0.0.1 - - [19/Apr/2017:16:02:17 +0000] "GET /test HTTP/1.1" 404 547 "-" "curl/7.51.0"
die message
Komponente hat einen redundanten Zeitstempel, und ich möchte Passen Sie das Format an. Die documentation sagt, es sollte möglich sein, aber ich verstehe nicht, wie man es tatsächlich funktioniert und es gibt keine Codebeispiele.
fand ich nur this usage aber mit:
mylogger = logging.Logger('aiohttp.access')
mylogger.setLevel(logging.DEBUG)
mylogger.addHandler(ch)
handler = app.make_handler(
logger=mylogger,
access_log_format='%r %s %b',
)
die Anwendung überhaupt kein Protokoll erzeugt. Ich verstehe nicht, was make_handler
genau tut, und eine previous question hilft nicht.
Wie kann ich den message
Teil des Protokolls formatieren und die Elemente einfügen, die in der aiohttp docs aufgelistet sind?
Haben Sie 'aiohttp.web.Application.make_handler()' aufgerufen? –
Nein, in diesem Beispiel rufen sie es in der App-Instanz auf. Ich habe es trotzdem versucht und es sagt 'make_handler() fehlt 1 benötigtes Positionsargument: 'self', also scheint es, dass es eine Instanzmethode ist – Jacopofar