Scrapy – 日志

Scrapy – 日志

描述

日志 是指对事件的跟踪,它使用内置的日志系统并定义函数和类来实现应用程序和库。日志是一个现成的材料,它可以与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")

现在,你也可以使用记录器将消息包围起来,使用记录帮助器记录,以获得清晰显示的记录消息,如下图所示

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 --logovel/-L LEVEL 覆盖 LOG_LEVEL
3 --nologLOG_ENABLED 设置为False

scrapy.utils.log模块

这个函数可以用来初始化Scrapy的日志默认值。

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

上述函数-

  • 通过Python标准日志路由警告和扭曲的日志。
  • 为Scrapy分配DEBUG,为Twisted日志分配ERROR级别。
  • 如果LOG_STDOUT设置为true,则将stdout路由到日志。

默认选项可以用 settings 参数来覆盖。如果没有指定设置,则使用默认值。当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 
)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程