开发手册 欢迎您!
软件开发者资料库

Scrapy - Logging

Scrapy Logging - 从简单和简单的步骤学习Scrapy,从基本到高级概念,包括概述,环境,命令行工具,蜘蛛,选择器,项目,项目加载器,Shell,项目管道,Feed导出,请求和响应,链接提取器,设置,例外,创建项目,定义项目,第一个蜘蛛,抓取,提取项目,使用项目,以下链接,Scraped数据,日志记录,统计信息收集,发送电子邮件,Telnet控制台,Web服务。

描述

记录意味着跟踪事件,事件使用内置记录系统并定义实现应用程序和库的函数和类.记录是一种随时可用的材料,可以使用记录设置中列出的Scrapy设置.

Scrapy将设置一些默认设置并在scrapy.utils的帮助下处理这些设置.运行命令时的log.configure_logging().

日志级别

在Python中,日志消息有五种不同的严重级别.以下列表以升序显示标准日志消息 :

  • logging.DEBUG  : 去;用于调试消息(最低严重性)

  • logging.INFO : 提供信息性消息

  • logging.WARNING : 用于警告信息

  • logging.ERROR : 对于常规错误

  • logging.CRITICAL : 严重错误(最高严重性)

如何记录消息

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

  import logging  logging.info("这是一个信息")

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

  import logging  logging.log(logging.INFO,"这是一个信息")

现在,您还可以使用记录器使用日志记录助手记录来封装消息,以使记录消息清楚地显示如下 :

import logginglogger = logging.getLogger()logger.info("这是一个信息")

可以有多个记录器,可以通过使用 logging.getLogger functi获取其名称来访问这些记录器显示如下.

 import logging  logger = logging.getLogger('mycustomlogger') logger.info( "这是一个信息")

使用包含模块路径的 __ name __ 变量的任何模块都可以使用自定义记录器显示如下 :

  import logging  logger = logging.getLogger(__ name__) logger.info("这是一个信息")

从蜘蛛登录

每个蜘蛛实例都有一个记录器在其中,可以使用如下 :

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)

在上面的代码中,记录器是创建的d使用Spider的名称,但您可以使用Python提供的任何自定义记录器,如下面的代码所示 :

import loggingimport scrapylogger = 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_FILE LOG_ENABLED 决定日志消息的目的地.

  • 当您将 LOG_ENCODING 设置为false时,它不会显示日志输出消息.

  • LOG_LEVEL 将确定消息的严重性顺序;严重性较低的消息将被过滤掉.

  • LOG_FORMAT LOG_DATEFORMAT 用于指定所有消息的布局.

  • 当您将 LOG_STDOUT 设置为true时,您的流程的所有标准输出和错误消息都将被重定向到日志.

命令行选项

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

Sr.NoCommand&说明
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)


Sr.No参数&说明
1

settings (字典,无)

它为根记录器创建和配置处理程序.默认情况下,它是.

2

install_root_handler(bool)

它指定安装根记录处理程序.默认情况下,它是 True .

上述函数 :

  • 通过Python标准日志记录路由警告和扭曲记录.

  • 为Scrapy和ERROR分配DEBUG等级为扭曲记录器.

  • 如果LOG_STDOUT设置为true,则将stdout路由到日志.

默认选项可以是使用设置参数覆盖.如果未指定设置,则使用默认值.当install_root_handler设置为true时,可以为root logger创建处理程序.如果设置为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 )