- Scrapy 教程
- Scrapy - 首页
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 环境
- Scrapy - 命令行工具
- Scrapy - 爬虫 (Spiders)
- Scrapy - 选择器 (Selectors)
- Scrapy - 项目 (Items)
- Scrapy - 项目加载器 (Item Loaders)
- Scrapy - Shell
- Scrapy - 项目管道 (Item Pipeline)
- Scrapy - 数据导出 (Feed exports)
- Scrapy - 请求 & 响应
- Scrapy - 链接提取器 (Link Extractors)
- Scrapy - 设置
- Scrapy - 异常
- Scrapy 实战项目
- Scrapy - 创建项目
- Scrapy - 定义项目
- Scrapy - 第一个爬虫
- Scrapy - 爬取
- Scrapy - 提取项目
- Scrapy - 使用项目
- Scrapy - 跟踪链接
- Scrapy - 抓取数据
- Scrapy 有用资源
- Scrapy - 快速指南
- Scrapy - 有用资源
- Scrapy - 讨论
Scrapy - 日志记录
描述
日志记录是指对事件的跟踪,它使用内置的日志系统并定义函数和类来实现应用程序和库。日志记录是一个现成的工具,可以与列在日志记录设置中的 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")
从爬虫中记录日志
每个爬虫实例在其内部都有一个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)
在上面的代码中,日志记录器是使用爬虫的名称创建的,但是您可以使用 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_FILE和LOG_ENABLED决定日志消息的目标。
当您将LOG_ENCODING设置为false时,它将不会显示日志输出消息。
LOG_LEVEL将确定消息的严重性顺序;严重性较低的消息将被过滤掉。
LOG_FORMAT和LOG_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 标准日志记录路由警告和 Twisted 日志记录。
- 将 DEBUG 分配给 Scrapy,并将 ERROR 级别分配给 Twisted 日志记录器。
- 如果 LOG_STDOUT 设置为 true,则将 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 )