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

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

Log Level

Scrapy 提供 5 层 logging 级别:

  • CRITICAL - 严重错误(critical)
  • ERROR - 一般错误(regular errors)
  • WARNING - 警告信息(warning messages)
  • INFO - 一般信息(informational messages)
  • DEBUG - 调试信息(debugging messages)

如何设置 log 级别

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

如何记录信息(log message)

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

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

在 Spider 中添加 log(Logging from Spiders)

在 spider 中添加 log 的推荐方式是使用 Spider 的 log() 方法。该方法会自动在调用 scapy.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:

  • LOG_ENABLED
  • LOG_ENCODING
  • LOG_FILE
  • LOG_LEVEL
  • LOG_STDOUT

最新文章

  1. 计算机网络学习笔记--数据链据层之MAC子层(整理)
  2. [LeetCode] Palindrome Linked List 回文链表
  3. Arrays.asList()注意
  4. postgresql 函数返回结果集(zz)
  5. C++主要数据类型在计算机中所占字节大小
  6. [Ubuntu] Ubuntu DNS服务器配置
  7. bzoj4034 (树链剖分+线段树)
  8. LeetCode Rotate List (链表操作)
  9. 初涉JavaScript模式 (10) : 函数 【进阶用法】
  10. vagrant拷贝后vagrant file需要加的配置
  11. PHP分页类,支持自定义样式,中间5页
  12. ArcGIS API For Javascript_4.8-渲染器Renderer
  13. 《 动态规划_ 入门_最大连续子序列_HDU_1003 》
  14. java线程池实现原理
  15. [转]python中pandas库中DataFrame对行和列的操作使用方法
  16. Do More With These Great Plugins for Windows Live Writer(old)
  17. 机器学习与Tensorflow(6)——LSTM的Tensorflow实现、Tensorboard简单实现、CNN应用
  18. Unity Remote远程调试
  19. layui禁用侧边导航栏点击事件
  20. ES6 中 let and const

热门文章

  1. 简单介绍Spring是什么?
  2. CentOS中配置php环境
  3. 第6章 新建工程-寄存器版—零死角玩转STM32-F429系列
  4. mongoose查询数据库步骤
  5. 永久免费开源的卫星地形图地图下载工具更新Somap2.13版本功能更新 更新时间2019年2月22日13:59:05
  6. vue2.0之监听属性的使用心得及搭配计算属性的使用
  7. elasticsearch-dsl聚合-1
  8. 基于mybatis设计简单OA系统问题3
  9. rsync+lsyncd实现实时同步
  10. 执行pip命令时遇到 Fatal error in launcher: Unable to create process using '"'