move api docs to source code

This commit is contained in:
Anubhav Patel 2019-03-07 16:40:59 +05:30
parent 82d239f3b1
commit 924b67437b
3 changed files with 36 additions and 47 deletions

View File

@ -196,41 +196,11 @@ to override some of the Scrapy settings regarding logging.
Custom Log Formats
-------------------
Custom log format can be set for different actions by extending ``scrapy.logformatter.LogFormatter`` class.
Each method of ``scrapy.logformatter.LogFormatter`` represents an action. All methods inherited from
``scrapy.logformatter.LogFormatter`` in your custom log formatting class must return a dictionary listing
the parameters ``level``, ``msg`` and ``args`` which are going to be used for constructing the log message.
Listed below is details of what each key represents :
* ``level`` is the log level for that action, you can use those from the python logging library:
:setting:`logging.DEBUG`, :setting:`logging.INFO`, :setting:`logging.WARNING`, :setting:`logging.ERROR`
and :setting:`logging.CRITICAL`.
* ``msg`` should be a string that can contain different formatting placeholders. This string, formatted
with the provided ``args``, is going to be the long message for that action.
* ``args`` should be a tuple or dict with the formatting placeholders for `msg`. The final log message is
computed as ``msg % args``.
.. note:: To use custom log formatting class, you must mention it in ``settings.py``, by adding a line
``LOG_FORMATTER = '<path_to_your_class>``
Custom log format can be set for different actions by extending :class:`~scrapy.logformatter.LogFormatter` class
and making :setting:`LOG_FORMATTER` inside ``settings.py`` point to your new class.
.. class:: scrapy.logformatter.LogFormatter
The default log formatting class in Scrapy.
.. method:: crawled (request, response, spider)
``crawled`` is called to log message when the crawler finds a webpage.
.. method:: scraped(item, response, spider)
``scraped`` is called to log message when an item scraped by a spider.
.. method:: dropped(item, exception, response, spider)
``dropped`` is called to log message when an item is dropped while it is passing through the item pipeline.
.. autoclass:: scrapy.logformatter.LogFormatter
:members:
Advanced customization
----------------------

View File

@ -866,6 +866,15 @@ directives.
.. _Python datetime documentation: https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
.. setting:: LOG_FORMATTER
LOG_FORMATTER
-------------
Default: ``scrapy.logformatter.LogFormatter``
The class to use for formatting log messages for different actions.
.. setting:: LOG_LEVEL
LOG_LEVEL

View File

@ -13,25 +13,29 @@ CRAWLEDMSG = u"Crawled (%(status)s) %(request)s%(request_flags)s (referer: %(ref
class LogFormatter(object):
"""Class for generating log messages for different actions.
All methods must return a dictionary listing the parameters `level`, `msg`
and `args` which are going to be used for constructing the log message when
calling logging.log.
All methods must return a dictionary listing the parameters ``level``, ``msg``
and ``args`` which are going to be used for constructing the log message when
calling ``logging.log``.
Dictionary keys for the method outputs:
* `level` should be the log level for that action, you can use those
from the python logging library: logging.DEBUG, logging.INFO,
logging.WARNING, logging.ERROR and logging.CRITICAL.
* `msg` should be a string that can contain different formatting
placeholders. This string, formatted with the provided `args`, is going
to be the log message for that action.
* ``level`` is the log level for that action, you can use those from the
`python logging library <https://docs.python.org/3/library/logging.html>`_ :
``logging.DEBUG``, ``logging.INFO``, ``logging.WARNING``, ``logging.ERROR``
and ``logging.CRITICAL``.
* ``msg`` should be a string that can contain different formatting placeholders. This string, formatted
with the provided ``args``, is going to be the long message for that action.
* ``args`` should be a tuple or dict with the formatting placeholders for ``msg``. The final log message is
computed as ``msg % args``.
* `args` should be a tuple or dict with the formatting placeholders for
`msg`. The final log message is computed as output['msg'] %
output['args'].
"""
def crawled(self, request, response, spider):
"""
``crawled`` is called to log message when the crawler finds a webpage.
"""
request_flags = ' %s' % str(request.flags) if request.flags else ''
response_flags = ' %s' % str(response.flags) if response.flags else ''
return {
@ -40,7 +44,7 @@ class LogFormatter(object):
'args': {
'status': response.status,
'request': request,
'request_flags' : request_flags,
'request_flags': request_flags,
'referer': referer_str(request),
'response_flags': response_flags,
# backward compatibility with Scrapy logformatter below 1.4 version
@ -49,6 +53,9 @@ class LogFormatter(object):
}
def scraped(self, item, response, spider):
"""
``scraped`` is called to log message when an item is scraped by a spider.
"""
if isinstance(response, Failure):
src = response.getErrorMessage()
else:
@ -63,6 +70,9 @@ class LogFormatter(object):
}
def dropped(self, item, exception, response, spider):
"""
``dropped`` is called to log message when an item is dropped while it is passing through the item pipeline.
"""
return {
'level': logging.WARNING,
'msg': DROPPEDMSG,