title: Aiohttp logging: how to distinguish log messages of different requests?
body: <p>Imagine I have this web application based on Aiohttp:</p>
  
  <pre><code>from aiohttp import web
  import asyncio
  import logging
  
  logger = logging.getLogger(__name__)
  
  async def hello(request):
      logger.info('Started processing request')
      await asyncio.sleep(1)
      logger.info('Doing something')
      await asyncio.sleep(1)
      return web.Response(text="Hello, world!\n")
  
  logging.basicConfig(
      level=logging.DEBUG,
      format='%(asctime)s %(name)-14s %(levelname)s: %(message)s')
  
  app = web.Application()
  app.add_routes([web.get('/', hello)])
  web.run_app(app)
  </code></pre>
  
  <p>Its output is (for example):</p>
  
  <pre><code>2019-11-11 13:37:14,757 __main__       INFO: Started processing request
  2019-11-11 13:37:14,757 __main__       INFO: Started processing request
  2019-11-11 13:37:15,761 __main__       INFO: Doing something
  2019-11-11 13:37:15,761 __main__       INFO: Doing something
  2019-11-11 13:37:16,765 aiohttp.access INFO: 127.0.0.1 [11/Nov/2019:12:37:14 +0000] "GET / HTTP/1.1" 200 165 "-" "curl/7.66.0"
  2019-11-11 13:37:16,768 aiohttp.access INFO: 127.0.0.1 [11/Nov/2019:12:37:14 +0000] "GET / HTTP/1.1" 200 165 "-" "curl/7.66.0"
  </code></pre>
  
  <p>How do I know what log messages belong to what request?</p>
  
  <p>I would like to see some "request id" in every log message (similar idea to the "correlation id" in microservices)...</p>