web-dev-qa-db-ja.com

Scrapyでのロギングをオフにする方法(Python)

Scrapyを使用してスパイダーを作成しましたが、デフォルトのログをオフにする方法がわかりません。から ドキュメント 実行することでオフにできるはずです

        logging.basicConfig(level=logging.ERROR)

しかし、これは効果がありません。 logging.basicConfig()のコードを見ると、これは「ルートロガーにハンドラーが構成されている」ためだと思いますが、おそらくそれについては間違っています。とにかく、Scrapyが通常の出力を行わないようにするために私が何をする必要があるかを誰かが説明できますか

        2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF)
        2015-10-18 17:42:00 [scrapy] INFO: Scrapy 1.0.3 started (bot: EF)
        2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto
        2015-10-18 17:42:00 [scrapy] INFO: Optional features available: ssl, http11, boto

等。?

編集:以下のsirfzによって提案されているように、行

        logging.getLogger('scrapy').setLevel(logging.WARNING)

ロギングレベルを設定するために使用できます。ただし、スパイダーのinitメソッド(またはそれ以降)でこれを行う必要があるようです。

15
Dr. Pain

Scrapy(またはその他のロガー)のログレベルを変更するだけです。

_logging.getLogger('scrapy').setLevel(logging.WARNING)
_

これにより、WARNINGレベル未満のすべてのログメッセージが無効になります。

すべてのスクレイプログメッセージを無効にするには、propagateFalseに設定するだけです。

_logging.getLogger('scrapy').propagate = False
_

これにより、スクラピーズのログメッセージがルートロガー(basicConfig()を使用して構成されたときにコンソールに出力される)に伝播するのを防ぎます。

22
sirfz

スクリプトを起動するときに、パラメータとして-s LOG_ENABLED=Falseを追加できます。それでうまくいくはずです。

:バージョン1.1の場合、少し変更されました:-s LOG_ENABLED=0

7
Steven_VdB

scrapyコマンドを使用してスパイダーを起動するときに、パラメーターとして--nologを追加するだけです。
scrapyv1.7.3を使用しています。コマンドを使用すると、ヘルプで詳細を確認できます。

scrapy --help
1
Siddhant

logging.basicConfig(** kwargs)

ルートロガーにハンドラーが既に構成されている場合、この関数は何もしません。

Scrapyにはハンドラーが構成されているため、これは機能しません

1
宏杰李