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