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メソッド(またはそれ以降)でこれを行う必要があるようです。
Scrapy(またはその他のロガー)のログレベルを変更するだけです。
_logging.getLogger('scrapy').setLevel(logging.WARNING)
_
これにより、WARNING
レベル未満のすべてのログメッセージが無効になります。
すべてのスクレイプログメッセージを無効にするには、propagate
をFalse
に設定するだけです。
_logging.getLogger('scrapy').propagate = False
_
これにより、スクラピーズのログメッセージがルートロガー(basicConfig()
を使用して構成されたときにコンソールに出力される)に伝播するのを防ぎます。
スクリプトを起動するときに、パラメータとして-s LOG_ENABLED=False
を追加できます。それでうまくいくはずです。
注:バージョン1.1の場合、少し変更されました:-s LOG_ENABLED=0
scrapy
コマンドを使用してスパイダーを起動するときに、パラメーターとして--nolog
を追加するだけです。
scrapyv1.7.3を使用しています。コマンドを使用すると、ヘルプで詳細を確認できます。
scrapy --help
logging.basicConfig(** kwargs)
ルートロガーにハンドラーが既に構成されている場合、この関数は何もしません。
Scrapyにはハンドラーが構成されているため、これは機能しません