Scrapy-logging

提供:Dev Guides
移動先:案内検索

スクレイピー-ロギング

説明

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

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

スパイダーからのログ

すべてのスパイダーインスタンスには、その中に*ロガー*があり、次のように使用できます-

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に設定すると、プロセスのすべての標準出力とエラーメッセージがログにリダイレクトされます。

コマンドラインオプション

スクレイピー設定は、次の表に示すようにコマンドライン引数を渡すことでオーバーライドできます-

Sr.No Command & Description
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 Parameter & Description
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
)