2012-04-13 5 views
2

私はpythonのロギングモジュールを使ってロギングを行っています。一般的に、私はそれが動作する方法が本当に好きですが、私は次の簡単な方法があるかどうか疑問に思っています:infoレベルのエントリだけを別のファイルに記録する

私のスクリプトが実行されているときにデータをログアウトしたい.info()。また、logger.warning()とlogger.error()を使用して、警告/エラーをコンソールに記録したいと思っています。その部分は簡単です。しかし、警告/エラーが情報ログにも送られなかった場合は、私も好きです。

私が理解しているように、情報レベルでハンドラを設定すると、情報レベル以上のものは常に渡されます。

唯一の解決策は、私のログを2つの別々のロガーに分けることですが、私はそれを避けたいと思います。

+0

、私は実際に私の答えを見つけましたこの質問では: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams (これをマークする適切な方法がある場合は、誰かが私に知らせるだろうか?ありがとう!) – MattyP

+0

回答をコメントではなく回答として追加し、それを受け入れます。 –

答えて

0

ログレコードのレベルに基づいて、ハンドラーでログメッセージを異なる方法で処理する方がクリーンなアプローチになると思います。 LogRecordオブジェクトはlevelnolevelnameのプロパティを持っていますので、logging.error()logging.warning()logging.debug()を区別する必要があります。

詳細:http://docs.python.org/library/logging.html#logrecord-objects

+0

それは私自身のログ記録ハンドラを作成する必要があるということですか? – MattyP

+0

@MattyP:必ずしもそうではありません。既存のハンドラー(各ロギングの方法ごとに1つ)を使用して、異なるフィルターを追加することができます。あなたが持っているかもしれない質問に答える(「自分でフィルタを作成する必要がありますか?_」):それは依存します - 'filter'メソッドを使用するインスタンスはすべて行います(http://docs.python.org/library/logging.html#フィルタオブジェクト)、あなたはただいくつかの適切な既存のフィルタを見つける必要があります:) – Tadeck

関連する問題