Scrapy – 日志记录
Scrapy – 日志记录
描述
日志是指事件的跟踪,它使用内置的日志系统并定义函数和类来实现应用程序和库。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")
从蜘蛛记录
每个蜘蛛实例都有一个记录器,可以按如下方式使用 –
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_FILE和LOG_ENABLED决定日志消息目的地。
-
当您将LOG_ENCODING设置为 false 时,它不会显示日志输出消息。
-
该LOG_LEVEL将确定该消息的严重性顺序; 那些严重性较低的消息将被过滤掉。
-
该LOG_FORMAT和LOG_DATEFORMAT用于指定对所有消息的布局。
-
当您将LOG_STDOUT设置为 true 时,您进程的所有标准输出和错误消息将被重定向到日志。
命令行选项
可以通过传递命令行参数来覆盖 Scrapy 设置,如下表所示 –
Sr.No | 命令和描述 |
---|---|
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 (dict, None) 它为根记录器创建和配置处理程序。默认情况下,它是None。 |
2 |
install_root_handler (bool) 它指定安装根日志处理程序。默认情况下,它是True。 |
上述功能 –
- 通过 Python 标准日志记录路由警告和扭曲的日志记录。
- 将 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 )