2017-08-09 7 views
0

私はスクレイピングライブラリを使用してスクレイピングを行い、すべてのログを私に渡します。ログファイルは非常に大きく、私はファイル全体を読むのではなく、別の方法を望んでいました。私は例外に興味があるだけです。Python、logging.exceptionからログ例外を読み取る

生のlogging.exceptionを取得し、別のログファイルを作成せずにそこから読み取るのは可能でしょうか?

答えて

1

Scrapyが使用するpythonロギング機能を使用します。プログラムのエントリポイントでは、このログ機能をカスタマイズする必要があります。たとえば、ログ関連の呼び出しを使用する前に、__init__.pyファイル内に置くことができます。あなたがする必要がどのような

が異なるように設定されてハンドラ異なるレベルため(ERROR、WARNING、...)。例外レベルが存在しない場合は、エラーレベルまたはクリティカルレベルと間違っている可能性があります。

これは「Logging How To」です。確認する必要があります。あなたが本当に例外ではなく、エラーまたは重大レベルについて話している場合は、最後に

import logging 

#this is the logger Scrapy uses throughout the app. 
logger = logging.getLogger() 

my_exception_handler = logging.FileHandler() 
my_exception_handler.setLevel(Logging.ERROR) 

logger.addHandler(my_exception_handler) 

あなたの解決策は次のようになります。 Exceptionクラスから継承するか上書きして、上で説明したのと同じロギング手法を使用する必要があります。

+0

ありがとうございました。私はあなたの答えに取り組んでいますが、ファイルの作成を避けることを望んでいました。今、ファイルを作成し、ファイルを読み込み、mongodbに例外を格納し、ファイルを削除します。問題は、自分自身でログを取っていないことです。mongodbに直接ログすることは可能ですか? –

+0

これはあなたの質問ではありませんでした。 StreamHandler()をサブクラス化し、 'emit()'メソッドを設定する独自のハンドラを作成することで、あなたは望むことができます。これはpymongo/mongodbを呼び出します。プロセスは上記と同じです。これで問題が解決したら、私の答えを受け入れてください。 – Pobe

関連する問題