Trị liệu - Ghi nhật ký

Sự miêu tả

Loggingcó nghĩa là theo dõi các sự kiện, sử dụng hệ thống ghi nhật ký cài sẵn và xác định các chức năng và lớp để triển khai các ứng dụng và thư viện. Ghi nhật ký là một tài liệu sẵn sàng sử dụng, có thể hoạt động với cài đặt Trị liệu được liệt kê trong cài đặt Ghi nhật ký.

Scrapy sẽ đặt một số cài đặt mặc định và xử lý các cài đặt đó với sự trợ giúp của scrapy.utils.log.configure_logging () khi chạy lệnh.

Mức độ nhật ký

Trong Python, có năm mức độ nghiêm trọng khác nhau trên một thông báo nhật ký. Danh sách sau đây hiển thị các thông báo nhật ký tiêu chuẩn theo thứ tự tăng dần -

  • logging.DEBUG - để gỡ lỗi thông báo (mức độ nghiêm trọng thấp nhất)

  • logging.INFO - cho các tin nhắn thông tin

  • logging.WARNING - cho các thông báo cảnh báo

  • logging.ERROR - đối với các lỗi thường xuyên

  • logging.CRITICAL - đối với các lỗi nghiêm trọng (mức độ nghiêm trọng cao nhất)

Cách ghi nhật ký tin nhắn

Đoạn mã sau cho thấy ghi nhật ký một tin nhắn bằng logging.info cấp độ.

import logging 
logging.info("This is an information")

Thông báo ghi nhật ký ở trên có thể được chuyển như một đối số bằng cách sử dụng logging.log được hiển thị như sau -

import logging 
logging.log(logging.INFO, "This is an information")

Bây giờ, bạn cũng có thể sử dụng trình ghi nhật ký để gửi kèm thông báo bằng cách ghi nhật ký trình trợ giúp ghi nhật ký để thông báo ghi nhật ký được hiển thị rõ ràng như sau:

import logging
logger = logging.getLogger()
logger.info("This is an information")

Có thể có nhiều trình ghi nhật ký và chúng có thể được truy cập bằng cách lấy tên của chúng bằng cách sử dụng logging.getLogger chức năng hiển thị như sau.

import logging
logger = logging.getLogger('mycustomlogger')
logger.info("This is an information")

Một trình ghi nhật ký tùy chỉnh có thể được sử dụng cho bất kỳ mô-đun nào bằng cách sử dụng biến __name__ chứa đường dẫn mô-đun được hiển thị như sau:

import logging
logger = logging.getLogger(__name__)
logger.info("This is an information")

Ghi nhật ký từ Spiders

Mỗi phiên bản nhện đều có logger bên trong nó và có thể được sử dụng như sau:

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)

Trong đoạn mã trên, trình ghi nhật ký được tạo bằng tên của Spider, nhưng bạn có thể sử dụng bất kỳ trình ghi nhật ký tùy chỉnh nào do Python cung cấp như được hiển thị trong đoạn mã sau:

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)

Cấu hình ghi nhật ký

Người ghi nhật ký không thể tự hiển thị các tin nhắn do họ gửi. Vì vậy, họ yêu cầu "trình xử lý" để hiển thị các thông báo đó và trình xử lý sẽ chuyển hướng các thư này đến các điểm đến tương ứng như tệp, email và đầu ra chuẩn.

Tùy thuộc vào các cài đặt sau, Scrapy sẽ định cấu hình trình xử lý cho trình ghi nhật ký.

Cài đặt ghi nhật ký

Các cài đặt sau được sử dụng để định cấu hình ghi nhật ký -

  • Các LOG_FILELOG_ENABLED quyết định điểm đến cho các thông điệp nhật ký.

  • Khi bạn đặt LOG_ENCODING thành false, nó sẽ không hiển thị thông báo đầu ra nhật ký.

  • Các LOG_LEVELsẽ xác định thứ tự nghiêm trọng của thông báo; những thông báo ít nghiêm trọng hơn sẽ được lọc ra.

  • Các LOG_FORMATLOG_DATEFORMAT được sử dụng để chỉ định bố cục cho tất cả các thư.

  • Khi bạn đặt LOG_STDOUT thành true, tất cả đầu ra tiêu chuẩn và thông báo lỗi của quy trình của bạn sẽ được chuyển hướng đến nhật ký.

Tùy chọn dòng lệnh

Cài đặt trị liệu có thể được ghi đè bằng cách chuyển các đối số dòng lệnh như được hiển thị trong bảng sau:

Sr.No Lệnh & Mô tả
1

--logfile FILE

Ghi đè LOG_FILE

2

--loglevel/-L LEVEL

Ghi đè LOG_LEVEL

3

--nolog

Đặt LOG_ENABLED thành Sai

mô-đun scrapy.utils.log

Chức năng này có thể được sử dụng để khởi tạo mặc định ghi nhật ký cho Scrapy.

scrapy.utils.log.configure_logging(settings = None, install_root_handler = True)

Sr.No Mô tả về Thông Số
1

settings (dict, None)

Nó tạo và cấu hình trình xử lý cho root logger. Theo mặc định, nó là Không có .

2

install_root_handler (bool)

Nó chỉ định cài đặt trình xử lý ghi nhật ký gốc. Theo mặc định, nó là True .

Chức năng trên -

  • Cảnh báo định tuyến và ghi nhật ký xoắn thông qua ghi nhật ký tiêu chuẩn Python.
  • Gán DEBUG cho cấp Scrapy và ERROR cho các trình ghi xoắn.
  • Định tuyến stdout để ghi nhật ký, nếu cài đặt LOG_STDOUT là đúng.

Các tùy chọn mặc định có thể được ghi đè bằng cách sử dụng settingstranh luận. Khi cài đặt không được chỉ định, thì mặc định sẽ được sử dụng. Trình xử lý có thể được tạo cho trình ghi gốc, khi install_root_handler được đặt thành true. Nếu nó được đặt thành false, thì sẽ không có bất kỳ đầu ra nhật ký nào được đặt. Khi sử dụng các lệnh Scrapy, config_logging sẽ được gọi tự động và nó có thể chạy rõ ràng, trong khi chạy các tập lệnh tùy chỉnh.

Để định cấu hình đầu ra của ghi nhật ký theo cách thủ công, bạn có thể sử dụng logging.basicConfig() được hiển thị như sau -

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 
)