Scrapy教程

Scrapy 日志记录

说明

Logging 表示事件跟踪,它使用内置的日志系统并定义函数和类来实现应用程序和库。 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")
现在,您还可以使用 loggers 来封装消息,使用 logging helpers 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")

从爬虫记录

每个爬虫实例都有一个 logger 并且可以如下使用-
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 设置,如下表所示-
命令和说明
--logfile FILE
覆盖 LOG_FILE
--loglevel/-L LEVEL
覆盖 LOG_LEVEL
--nolog
设置 LOG_ENABLED 为 False

scrapy.utils.log 模块

此函数可用于初始化 Scrapy 的日志记录默认值。
scrapy.utils.log.configure_logging(settings = None, install_root_handler = true)
参数和说明
settings (dict, None)
它为根记录器创建和配置处理程序。默认情况下,它是
install_root_handler (bool)
它指定安装根日志处理程序。默认情况下,它是 True
上述功能-
通过 Python 标准日志记录路由警告和扭曲的日志记录。 将 DEBUG 分配给 Scrapy,将 ERROR 级别分配给 Twisted 记录器。 将标准输出路由到日志,如果 LOG_STDOUT 设置为真。
可以使用 settings 参数覆盖默认选项。如果未指定设置,则使用默认值。当 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 
)
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4