爬蟲:Scrapy11 - Logging


Scrapy 提供了 log 功能。可以通過 scrapy.log 模塊使用。當前底層實現使用了 Twisted logging,不過可能在之后會有所變化。

log 服務必須通過顯式調用 scrapy.log.start() 來開啟,以捕捉頂層的 Scrapy 日志消息。再次之上,每個 crawler 都擁有獨立的 log 觀察者(observer)(創建時自動連接(attach)),接收其 spider 的日志消息。

Log Level

Scrapy 提供 5 層 logging 級別:

  • CRITICAL - 嚴重錯誤(critical)
  • ERROR - 一般錯誤(regular errors)
  • WARNING - 警告信息(warning messages)
  • INFO - 一般信息(informational messages)
  • DEBUG - 調試信息(debugging messages)

如何設置 log 級別

您可以通過終端選項(command line option) –loglevel/-L 或 LOG_LEVEL 來設置 log 級別。

如何記錄信息(log message)

下面給出如何使用 WARNING 級別來記錄信息的例子:

from scrapy import log
log.msg("This is a warning", level=log.WARNING)

在 Spider 中添加 log(Logging from Spiders)

在 spider 中添加 log 的推薦方式是使用 Spider 的 log() 方法。該方法會自動在調用 scapy.log.msg() 時賦值 spider 參數。其他的參數則直接傳遞給 msg() 方法。

scrapy.log 模塊

scrapy.log.start(logfile=None, loglevel=None, logstdout=None)

啟動 Scrapy 頂層 logger。該方法必須在記錄任何頂層消息前被調用(使用模塊的 msg() 而不是 Spider.log 的消息)。

否則,之前的消息將會丟失。

參數:

  • logfile (str) – 用於保存 log 輸出的文件路徑。如果被忽略,LOG_FILE 設置會被使用。如果兩個參數都是 None,log 將會被輸出到標准錯誤流(standard error)。
  • loglevel – 記錄的最低的 log 級別。可用的值有: CRITICAL,ERROR,WARNING,INFO and DEBUG。
  • logstdout (boolean) – 如果為 True,所有您的應用的標准輸出(包括錯誤)將會被記錄(logged instead)。 例如,如果您調用 “print ‘hello’”,則’hello’會在 Scrapy 的 log 中被顯示。 如果被忽略,則 LOG_STDOUT 設置會被使用。

scrapy.log.msg(message, level=INFO, spider=None)

記錄信息(Log a message)。

參數:

  • message (str) – log 的信息
  • level – 該信息的 log 級別. 參考 Log levels.
  • spider (Spider 對象) – 記錄該信息的 spider. 當記錄的信息和特定的 spider 有關聯時,該參數必須被使用。

scrapy.log.CRITICAL

嚴重錯誤的 Log 級別

scrapy.log.ERROR

錯誤的 Log 級別 Log level for errors

scrapy.log.WARNING

警告的 Log 級別 Log level for warnings

scrapy.log.INFO

記錄信息的 Log 級別(生產部署時推薦的 Log 級別)

scrapy.log.DEBUG

調試信息的 Log 級別(開發時推薦的 Log 級別)

Logging 設置

以下設置可以被用來配置 logging:

  • LOG_ENABLED
  • LOG_ENCODING
  • LOG_FILE
  • LOG_LEVEL
  • LOG_STDOUT


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM