scrapy/docs/topics/logging.rst

3.7 KiB

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> </head>

Logging

Scrapy provides a logging facility which can be used through the :mod:`scrapy.log` module. The current underlying implementation uses Twisted logging but this may change in the future.

System Message: ERROR/3 (<stdin>, line 7); backlink

Unknown interpreted text role "mod".

The logging service must be explicitly started through the :func:`scrapy.log.start` function to catch the top level Scrapy's log messages. On top of that, each crawler has its own independent log observer (automatically attached when it's created) that intercepts its spider's log messages.

System Message: ERROR/3 (<stdin>, line 13); backlink

Unknown interpreted text role "func".

Log levels

Scrapy provides 5 logging levels:

  1. :data:`~scrapy.log.CRITICAL` - for critical errors

    System Message: ERROR/3 (<stdin>, line 26); backlink

    Unknown interpreted text role "data".

  2. :data:`~scrapy.log.ERROR` - for regular errors

    System Message: ERROR/3 (<stdin>, line 27); backlink

    Unknown interpreted text role "data".

  3. :data:`~scrapy.log.WARNING` - for warning messages

    System Message: ERROR/3 (<stdin>, line 28); backlink

    Unknown interpreted text role "data".

  4. :data:`~scrapy.log.INFO` - for informational messages

    System Message: ERROR/3 (<stdin>, line 29); backlink

    Unknown interpreted text role "data".

  5. :data:`~scrapy.log.DEBUG` - for debugging messages

    System Message: ERROR/3 (<stdin>, line 30); backlink

    Unknown interpreted text role "data".

How to set the log level

You can set the log level using the --loglevel/-L command line option, or using the :setting:`LOG_LEVEL` setting.

System Message: ERROR/3 (<stdin>, line 35); backlink

Unknown interpreted text role "setting".

How to log messages

Here's a quick example of how to log a message using the WARNING level:

from scrapy import log
log.msg("This is a warning", level=log.WARNING)

Logging from Spiders

The recommended way to log from spiders is by using the Spider :meth:`~scrapy.spider.Spider.log` method, which already populates the spider argument of the :func:`scrapy.log.msg` function. The other arguments are passed directly to the :func:`~scrapy.log.msg` function.

System Message: ERROR/3 (<stdin>, line 49); backlink

Unknown interpreted text role "meth".

System Message: ERROR/3 (<stdin>, line 49); backlink

Unknown interpreted text role "func".

System Message: ERROR/3 (<stdin>, line 49); backlink

Unknown interpreted text role "func".

scrapy.log module

System Message: ERROR/3 (<stdin>, line 57)

Unknown directive type "module".

.. module:: scrapy.log
   :synopsis: Logging facility

System Message: ERROR/3 (<stdin>, line 60)

Unknown directive type "function".

.. function:: start(logfile=None, loglevel=None, logstdout=None)

    Start the top level Scrapy logger. This must be called before actually
    logging any top level messages (those logged using this module's
    :func:`~scrapy.log.msg` function instead of the :meth:`Spider.log
    <scrapy.spider.Spider.log>` method). Otherwise, messages logged before this
    call will get lost.

    :param logfile: the file path to use for logging output. If omitted, the
        :setting:`LOG_FILE` setting will be used. If both are ``None``, the log
        will be sent to standard error.
    :type logfile: str

    :param loglevel: the minimum logging level to log. Available values are:
        :data:`CRITICAL`, :data:`ERROR`, :data:`WARNING`, :data:`INFO` and
        :data:`DEBUG`.

    :param logstdout: if ``True``, all standard output (and error) of your
        application will be logged instead. For example if you "print 'hello'"
        it will appear in the Scrapy log. If omitted, the :setting:`LOG_STDOUT`
        setting will be used.
    :type logstdout: boolean

System Message: ERROR/3 (<stdin>, line 83)

Unknown directive type "function".

.. function:: msg(message, level=INFO, spider=None)

    Log a message

    :param message: the message to log
    :type message: str

    :param level: the log level for this message. See
        :ref:`topics-logging-levels`.

    :param spider: the spider to use for logging this message. This parameter
        should always be used when logging things related to a particular
        spider.
    :type spider: :class:`~scrapy.spider.Spider` object

System Message: ERROR/3 (<stdin>, line 98)

Unknown directive type "data".

.. data:: CRITICAL

    Log level for critical errors

System Message: ERROR/3 (<stdin>, line 102)

Unknown directive type "data".

.. data:: ERROR

    Log level for errors

System Message: ERROR/3 (<stdin>, line 106)

Unknown directive type "data".

.. data:: WARNING

    Log level for warnings

System Message: ERROR/3 (<stdin>, line 110)

Unknown directive type "data".

.. data:: INFO

    Log level for informational messages (recommended level for production
    deployments)

System Message: ERROR/3 (<stdin>, line 115)

Unknown directive type "data".

.. data:: DEBUG

    Log level for debugging messages (recommended level for development)

Logging settings

These settings can be used to configure the logging:

</html>