1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
.. _aiohttp-logging:
Logging
=======
.. currentmodule:: aiohttp
*aiohttp* uses standard :mod:`logging` for tracking the
library activity.
We have the following loggers enumerated by names:
- ``'aiohttp.access'``
- ``'aiohttp.client'``
- ``'aiohttp.internal'``
- ``'aiohttp.server'``
- ``'aiohttp.web'``
- ``'aiohttp.websocket'``
You may subscribe to these loggers for getting logging messages. The
page does not provide instructions for logging subscribing while the
most friendly method is :func:`logging.config.dictConfig` for
configuring whole loggers in your application.
Access logs
-----------
Access log by default is switched on and uses ``'aiohttp.access'``
logger name.
The log may be controlled by :meth:`aiohttp.web.Application.make_handler` call.
Pass *access_log* parameter with value of :class:`logging.Logger`
instance to override default logger.
.. note::
Use ``app.make_handler(access_log=None)`` for disabling access logs.
Other parameter called *access_log_format* may be used for specifying log
format (see below).
.. _aiohttp-logging-access-log-format-spec:
Format specification
^^^^^^^^^^^^^^^^^^^^
The library provides custom micro-language to specifying info about
request and response:
+--------------+---------------------------------------------------------+
| Option | Meaning |
+==============+=========================================================+
| ``%%`` | The percent sign |
+--------------+---------------------------------------------------------+
| ``%a`` | Remote IP-address |
| | (IP-address of proxy if using reverse proxy) |
+--------------+---------------------------------------------------------+
| ``%t`` | Time when the request was started to process |
+--------------+---------------------------------------------------------+
| ``%P`` | The process ID of the child that serviced the request |
+--------------+---------------------------------------------------------+
| ``%r`` | First line of request |
+--------------+---------------------------------------------------------+
| ``%s`` | Response status code |
+--------------+---------------------------------------------------------+
| ``%b`` | Size of response in bytes, excluding HTTP headers |
+--------------+---------------------------------------------------------+
| ``%O`` | Bytes sent, including headers |
+--------------+---------------------------------------------------------+
| ``%T`` | The time taken to serve the request, in seconds |
+--------------+---------------------------------------------------------+
| ``%Tf`` | The time taken to serve the request, in seconds |
| | with fraction in %.06f format |
+--------------+---------------------------------------------------------+
| ``%D`` | The time taken to serve the request, in microseconds |
+--------------+---------------------------------------------------------+
| ``%{FOO}i`` | ``request.headers['FOO']`` |
+--------------+---------------------------------------------------------+
| ``%{FOO}o`` | ``response.headers['FOO']`` |
+--------------+---------------------------------------------------------+
| ``%{FOO}e`` | ``os.environ['FOO']`` |
+--------------+---------------------------------------------------------+
Default access log format is::
'%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"'
.. note::
When `Gunicorn <http://docs.gunicorn.org/en/latest/index.html>`_ is used for
:ref:`deployment <aiohttp-deployment-gunicorn>` its default access log format
will be automatically replaced with the default aiohttp's access log format.
If Gunicorn's option access_logformat_ is
specified explicitly it should use aiohttp's format specification.
Error logs
----------
*aiohttp.web* uses logger named ``'aiohttp.server'`` to store errors
given on web requests handling.
The log is enabled by default.
To use different logger name please specify *logger* parameter
(:class:`logging.Logger` instance) on performing
:meth:`aiohttp.web.Application.make_handler` call.
.. _access_logformat:
http://docs.gunicorn.org/en/stable/settings.html#access-log-format
.. disqus::
:title: aiohttp logging
|