python logging機能を自分用にまとめました
きまぐれに追記・修正するかもしれません
Loggerの部品
loggerとしては以下のオブジェクトがある
- logger:アプリケーションコードが直接使うインターフェースを公開します
- handler:(ロガーによって生成された) ログ記録を適切な送信先に送ります
- filterどのログ記録を出力するかを決定する、きめ細かい機能を提供します
- formatter:ログ記録が最終的に出力されるレイアウトを指定します
ログイベント情報は LogRecord インスタンスの形で、 logger, handler, filter, formatter の間でやりとりされます。
LoggerとHandlerのフローチャート
Loggerオブジェクト
Logger オブジェクトの仕事は大きく三つに分かれます。
一つ目は、アプリケーションが実行中にメッセージを記録できるように、いくつかのメソッドをアプリケーションから呼べるようにしています。
二つ目に、ロガーオブジェクトはどのメッセージに対して作用するかを、深刻度 (デフォルトのフィルタ機構) またはフィルタオブジェクトに基づいて決定します
。三つ目に、ロガーオブジェクトは関心を持っているすべてのログハンドラに関連するログメッセージを回送します。
つまり・・・こう・・?
Handlerオブジェクト
Handler オブジェクトは適切なログメッセージを (ログメッセージの深刻度に基づいて) ハンドラの指定された出力先に振り分けることに責任を持ちます。
LoggerオブジェクトにaddHandler()
関数でハンドラを追加できる
ハンドラは色々種類がある。->useful-handlers
-
setLevel()
:ロギングレベルの設定 -
setFormatter()
:フォーマットの設定 -
addFilter()
:フィルタの追加 -
removeFilter()
:フィルタの削除
がハンドラ設定に関連する関数になる。
ロギングレベルは以下。
ロギングレベル
フォーマッタオブジェクト
フォーマッタオブジェクトは最終的なログメッセージの順序、構造および内容を設定します。
styleには以下3つが設定可能です
- '%':メッセージフォーマット文字列では %()s 形式の置換文字列が使われます
- '{':メッセージフォーマット文字列は (キーワード引数を使う) str.format() と互換となります
- '$':メッセージフォーマット文字列は string.Template.substitute() で期待されているものと一致します