Logging

Scrapy提供了log功能。您可以通过 scrapy.log 模块使用。当前底层实现使用了 Twisted logging ,不过可能在之后会有所变化。

log服务必须通过显示调用 scrapy.log.start() 来开启,以捕捉顶层的Scrapy日志消息。 在此之上,每个crawler都拥有独立的log观察者(observer)(创建时自动连接(attach)),接收其spider的日志消息。

Log levels

Scrapy提供5层logging级别:

  1. CRITICAL - 严重错误(critical)
  2. ERROR - 一般错误(regular errors)
  3. WARNING - 警告信息(warning messages)
  4. INFO - 一般信息(informational messages)
  5. DEBUG - 调试信息(debugging messages)

如何设置log级别

您可以通过终端选项(command line option) –loglevel/-LLOG_LEVEL 来设置log级别。

如何记录信息(log messages)

下面给出如何使用 WARNING 级别来记录信息的例子:

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

在Spider中添加log(Logging from Spiders)

在spider中添加log的推荐方式是使用Spider的 log() 方法。该方法会自动在调用 scrapy.log.msg() 时赋值 spider 参数。其他的参数则直接传递给 msg() 方法。

scrapy.log模块

scrapy.log.start(logfile=None, loglevel=None, logstdout=None)

启动Scrapy顶层logger。该方法必须在记录任何顶层消息前被调用 (使用模块的 msg() 而不是 Spider.log 的消息)。否则,之前的消息将会丢失。

参数:
  • logfile (str) – 用于保存log输出的文件路径。如果被忽略, LOG_FILE 设置会被使用。 如果两个参数都是 None ,log将会被输出到标准错误流(standard error)。
  • loglevel – 记录的最低的log级别. 可用的值有: CRITICAL, ERROR, WARNING, INFO and DEBUG.
  • logstdout (boolean) – 如果为 True , 所有您的应用的标准输出(包括错误)将会被记录(logged instead)。 例如,如果您调用 “print ‘hello’” ,则’hello’ 会在Scrapy的log中被显示。 如果被忽略,则 LOG_STDOUT 设置会被使用。
scrapy.log.msg(message, level=INFO, spider=None)

记录信息(Log a message)

参数:
  • message (str) – log的信息
  • level – 该信息的log级别. 参考 Log levels.
  • spider (Spider 对象) – 记录该信息的spider. 当记录的信息和特定的spider有关联时,该参数必须被使用。
scrapy.log.CRITICAL

严重错误的Log级别

scrapy.log.ERROR

错误的Log级别 Log level for errors

scrapy.log.WARNING

警告的Log级别 Log level for warnings

scrapy.log.INFO

记录信息的Log级别(生产部署时推荐的Log级别)

scrapy.log.DEBUG

调试信息的Log级别(开发时推荐的Log级别)

Logging设置

以下设置可以被用来配置logging:

讨论