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
)