日志記錄是指使用內置的日志系統(tǒng)和定義的函數(shù)或類來實現(xiàn)應用程序和庫的事件跟蹤。 記錄日志是一個即用型的程序庫,它可以在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 參數(shù)傳遞,如下所示:
import logging
logging.log(logging.INFO, "This is an information")
現(xiàn)在,也可以使用 loggers 來關閉消息,通過記錄日志助手來獲取日志消息,如下圖所示:
import logging
logger = logging.getLogger()
logger.info("This is an information")
可以有多個記錄器,可以通過 logging.getLogger()函數(shù)使用名字進行訪問,如下圖所示。
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")
每個 spider 實例都有一個內置記錄器,并可調用如下:
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)
在上面的代碼中,logger是使用蜘蛛的名字創(chuàng)建的,但您可以使用Python提供的自定義 logger,如下面的代碼:
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)
記錄器不能夠顯示由自己發(fā)出消息。因此,它們需要“處理程序”顯示這些消息,以及處理程序將它們被重定向這些消息到各自的目的地,如文件,電子郵件,標準輸出。
根據(jù)下面的設置,Scrapy 將配置 logger 的處理程序。
下面給出的設置用于配置日志記錄:
LOG_FILE 和 LOG_ENABLED 決定日志消息目的地。
當您設置了 LOG_ENCODING ,它不會顯示日志輸出消息。
LOG_LEVEL 設置確定消息的嚴重性順序;嚴重程度不高的消息將被過濾掉。
LOG_FORMAT 和 LOG_DATEFORMAT 用于指定所有消息的布局。
當您設置 LOG_STDOUT 為 true ,所有的進程的標準輸出和錯誤消息將被重定向到日志中。
Scrapy設置可以通過命令行參數(shù)來覆蓋,如下面的表:
S.N. | 命令 | 描述 |
---|---|---|
1 | —logfile FILE | 覆蓋 LOG_FILE |
2 | —loglevel/-L LEVEL | 覆蓋 LOG_LEVEL |
3 | —nolog | 設置 LOG_ENABLED 為 false |
要手動配置日志輸出,可以使用 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
)
參考 - https://doc.scrapy.org/en/0.24/topics/logging.html