教程 > scrapy 教程 > 阅读:45

scrapy 日志服务——迹忆客-ag捕鱼王app官网

日志记录意味着跟踪事件,它使用内置的日志记录系统并定义函数和类来实现应用程序和库。 logging 是一种即用型材料,可以与 logging settings 中列出的 scrapy 设置一起使用。

scrapy 将设置一些默认设置,并在运行命令时借助 scrapy.utils.log.configure_logging() 处理这些设置。


日志级别

在 python 中,日志消息有五个不同的严重级别。 以下列表按升序显示标准日志消息 -

  • logging.debug - 用于调试消息(最低严重性)
  • logging.info - 用于信息性消息
  • logging.warning - 用于警告消息
  • logging.error - 对于常规错误
  • logging.critical - 对于严重错误(最高严重性)

如何记录消息

以下代码显示使用 logging.info 级别记录消息。

import logging 
logging.info("this is an information")

上面的日志消息可以使用 logging.log 作为参数传递,如下所示

import logging 
logging.log(logging.info, "this is an information")

现在,我们还可以使用日志记录器将消息封装起来,使用日志记录助手 logging 来获取清晰显示的日志记录消息,如下所示

import logging
logger = logging.getlogger()
logger.info("this is an information")

可以有多个记录器,可以通过使用 logging.getlogger 函数获取它们的名称来访问这些记录器,如下所示。

import logging
logger = logging.getlogger('mycustomlogger')
logger.info("this is an information")

自定义记录器可用于任何使用 __name__ 变量的模块,该变量包含如下所示的模块路径

import logging
logger = logging.getlogger(__name__)
logger.info("this is an information")

蜘蛛中记录日志

每个蜘蛛实例中都有一个记录器,可以按如下方式使用

import scrapy 
class logspider(scrapy.spider):  
   name = 'logspider' 
   start_urls = ['http://dmoz.com']  
   def parse(self, response): 
      self.logger.info('parse function called on %s', response.url)

在上面的代码中,记录器是使用 spider 的名称创建的,但是我们可以使用 python 提供的任何自定义记录器,如下面的代码所示

import logging
import scrapy
logger = logging.getlogger('customizedlogger')
class logspider(scrapy.spider):
   name = 'logspider'
   start_urls = ['http://dmoz.com']
   def parse(self, response):
      logger.info('parse function called on %s', response.url)

日志配置

记录器无法显示它们自己发送的消息。 因此他们需要“处理程序”来显示这些消息,并且处理程序会将这些消息重定向到它们各自的目的地,例如文件、电子邮件和标准输出。

根据以下设置,scrapy 将为记录器配置处理程序。

日志设置

以下设置用于配置日志记录

  • log_filelog_enabled 决定日志消息的目的地。
  • 当我们将 log_encoding 设置为 false 时,它不会显示日志输出消息。
  • log_level 将确定消息的严重性顺序; 那些严重程度较低的消息将被过滤掉。
  • log_formatlog_dateformat 用于指定所有消息的布局。
  • 当我们将 log_stdout 设置为 true 时,我们进程的所有标准输出和错误消息都将被重定向到日志。

命令行选项

可以通过传递命令行参数来覆盖 scrapy 设置,如下表所示

序号 命令 描述
1 --logfile file 覆盖 log_file
2 --loglevel/-l level 覆盖 log_level
3 --nolog 将 log_enabled 设置为 false

scrapy.utils.log 模块

此函数可用于初始化 scrapy 的日志记录默认值。

scrapy.utils.log.configure_logging(settings = none, install_root_handler = true)
序号 参数 描述
1 settings (dict, none) 它为根记录器创建和配置处理程序。 默认情况下,它是 none 。
2 install_root_handler (bool) 它指定安装根日志记录处理程序。 默认情况下,它是 true。

上述功能

  • 通过 python 标准日志记录路由警告和扭曲的日志记录。
  • debug 分配给 scrapy 并将 error 级别分配给 twisted 记录器。
  • 如果 log_stdout 设置为真,则将标准输出路由到日志。

可以使用设置参数覆盖默认选项。 如果未指定设置,则使用默认值。 当 install_root_handler 设置为 true 时,可以为根记录器创建处理程序。 如果设置为 false,则不会设置任何日志输出。 当使用 scrapy 命令时,configure_logging 将被自动调用并且它可以显式运行,同时运行自定义脚本。

要手动配置日志记录的输出,我们可以使用 logging.basicconfig() 如下所示

import logging 
from scrapy.utils.log import configure_logging  
configure_logging(install_root_handler = false) 
logging.basicconfig ( 
   filename = 'logging.txt', 
   format = '%(levelname)s: %(your_message)s', 
   level = logging.info 
)

查看笔记

扫码一下
查看教程更方便
网站地图