Logging¶
Scrapy提供了log功能。您可以通过
scrapy.log
模块使用。当前底层实现使用了 Twisted logging ,不过可能在之后会有所变化。
log服务必须通过显示调用 scrapy.log.start()
来开启,以捕捉顶层的Scrapy日志消息。
在此之上,每个crawler都拥有独立的log观察者(observer)(创建时自动连接(attach)),接收其spider的日志消息。
Log levels¶
Scrapy提供5层logging级别:
如何设置log级别¶
您可以通过终端选项(command line option) –loglevel/-L 或 :setting:`LOG_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输出的文件路径。如果被忽略,
:setting:`LOG_FILE` 设置会被使用。
如果两个参数都是
None
,log将会被输出到标准错误流(standard error)。 - loglevel – 记录的最低的log级别. 可用的值有:
CRITICAL
,ERROR
,WARNING
,INFO
andDEBUG
. - logstdout (boolean) – 如果为
True
, 所有您的应用的标准输出(包括错误)将会被记录(logged instead)。 例如,如果您调用 “print ‘hello’” ,则’hello’ 会在Scrapy的log中被显示。 如果被忽略,则 :setting:`LOG_STDOUT` 设置会被使用。
- logfile (str) – 用于保存log输出的文件路径。如果被忽略,
:setting:`LOG_FILE` 设置会被使用。
如果两个参数都是
-
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: