Aiohttp, wie man Zugangsprotokoll protokolliert?

Ich versuche, einen grundlegenden Logger für aiohttp arbeiten zu bekommen, aber es gibt einfach keine Log-Nachrichten, die protokolliert werden. Note_ logging benutzerdefinierte Nachrichten funktioniert wie erwartet.

async def main_page(request: web.Request): return "hello world" def setup_routes(app): app.router.add_get('/', main_page) async def init(loop): # load config from yaml file in current dir conf = load_config(str(pathlib.Path('.') / 'async_config.yml')) # setup application and extensions app = web.Application(loop=loop) # setup views and routes setup_routes(app) host, port = conf['host'], conf['port'] app['gmt_file'] = _get_gmt_file() return app, host, port LOG_FORMAT = '%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"' log_file = "log.text" handler = handlers.TimedRotatingFileHandler(log_file, when='midnight', backupCount=5) handler.setLevel(logging.DEBUG) formatter = logging.Formatter(LOG_FORMAT) handler.setFormatter(formatter) handler.name = "file_log" loop = asyncio.get_event_loop() app, host, port = loop.run_until_complete(init(loop)) logging.getLogger("aiohttp").addHandler(handler) # todo host ziehen per aiohttp methods, so we are externally visible. web.run_app(app, host=host, port=port) 

One Solution collect form web for “Aiohttp, wie man Zugangsprotokoll protokolliert?”

LOG_FORMAT sollte ggf. "% s" sein. '%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"' ist ein gültiger Parameter für .make_handler(access_log_format=...) Aufruf, Nicht logging.Formatter .

Als ersten Schritt schlage ich vor, den Root-Logger einzurichten und danach auf Fehler- / Zugriffsprotokolle zu gehen. Vielleicht Zugriffsprotokoll wert eigene private Datei wie access.log . Um dies zu erreichen, müssen Sie einen Handler für aiohttp.access Logger aiohttp.access , nicht für Top-Level- aiohttp .

Python ist die beste Programmiersprache der Welt.