Я хочу регистрировать все HTTP-запросы, отправленные http://docs.aiohttp.org/en/stable/index.html ClientSession
. Документация содержит список доступных регистраторов. Итак, я попробовал следующее:
import asyncio
import logging
import aiohttp
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
http_logger = logging.getLogger("aiohttp.client")
http_logger.setLevel(logging.DEBUG)
http_logger.propagate = True
async def make_request():
async with aiohttp.ClientSession() as session:
async with session.get('https://httpbin.org/get') as resp:
return await resp.text()
loop = asyncio.get_event_loop()
response_text = loop.run_until_complete(make_request())
print(response_text)
Но это произвело только следующий вывод:
DEBUG:asyncio:Using selector: EpollSelector
// response text print here
Я попробовал все регистраторы из этого списка в документации, а затем искал вопросы. Этот аналогичный: https://stackoverflow.com/questions/43500983/specify-log-request-format-in-aiohttp-2
Ответ описывает, как настроить ведение журнала для сервера aiohttp. Интересно, что они должны явно регистрировать логгер:
app = web.Application(loop=loop)
app.router.add_get('/', handle)
app.router.add_get('/{name}', handle)
loop.run_until_complete(
loop.create_server(
app.make_handler(access_log=mylogger, #<--------------- HERE
access_log_format='%r %s %b'), '0.0.0.0', 8080))
Клиенту это тоже нужно? Единственный способ, которым я мог бы разумно внедрить свой регистратор, вероятно, был бы сеансом. Но справочник по API для ClientSession не указывает никакого аргумента регистратора.