Scrapy-ロギング

説明

Logging組み込みのロギングシステムを使用し、アプリケーションとライブラリを実装するための関数とクラスを定義する、イベントの追跡を意味します。ロギングはすぐに使用できる素材であり、ロギング設定にリストされているScrapy設定で機能します。

Scrapyはいくつかのデフォルト設定を設定し、コマンドの実行時にscrapy.utils.log.configure_logging()を使用してそれらの設定を処理します。

ログレベル

Pythonでは、ログメッセージに5つの異なるレベルの重大度があります。次のリストは、標準のログメッセージを昇順で示しています-

  • 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")

これで、ロガーを使用して、ロギングヘルパーロギングを使用してメッセージを囲み、ロギングメッセージを次のように明確に表示することもできます。

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に設定します

scary.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標準ロギングを介してルーティングします。
  • 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 
)