Closed uchihashikenshi closed 4 years ago
logger
を設定するために、 Handler
, Formatter
, Filter
等を別ファイルで定義し、実行ファイルで読み込んで logger
オブジェクトを作成する。
loggers
keys
: Logger
インスタンス名を記述する。handlers
keys
: Handler
インスタンス名を記述する。主にメッセージの扱いなど。formatters
keys
: Formatter
インスタンス名を記述する。メッセージのフォーマット。これ以降の設定は、上記でつけた名前を使う。
logger_{logger_name}
level
: メッセージ出力レベルを設定。 DEBUG
か INFO
あたりに落ち着くと思われる。handlers
: 設定を適用する Handler
インスタンス名を記述する。基本は全てに適用。handler_{handler_name}
class
: 使用する Handler
クラスを指定する。例えば、 FileHandler
であればログ出力ファイルに関する設定になるし、 StreamHandler
であればストリーム出力に関する設定になる。level
: メッセージ出力レベルを設定。formatter
: メッセージのフォーマットを指定するargs
: Handler
クラスをインスタンス化する際に渡す変数。 tuple
形式なので注意。formatter_{formatter_name}
format
: フォーマットを書く仕様について。
/log/app.log
に書き出され、都度上書きされるINFO
で出力するもののうち、可視化に必要なものをフィルターするfileConfig()
を使った実装では不可能で、 dictConfig()
を使用する必要がある
json
や yaml
で外部に設定ファイルを用意し、読み込み、辞書型で使用するlogging.json
を読み込む logging_conf.py
を作り、その中で filter
などを実装できるようにした( filter
は未実装)。
外部ライブラリのログも一部吐かれてしまうので、若干の修正が必要。
http://matplotlib.1069221.n5.nabble.com/How-to-turn-off-matplotlib-DEBUG-msgs-td48822.html
jupyter
からの実行も考慮し、新たにログ設定を追加。
ログフィルターは今後必要なものを実装していく想定。とりあえず可視化用のフィルターを作る必要があるのと、上記の通り外部ライブラリのログを消す対応が必要だが、別 issue で扱う。
目的
logging
の設定を共通化し、ファイルにログを吐くことができるようにする。 さらに、ファイルから可視化を動かすことも検討。提案内容
logging.conf
を作り、fileConfig()
で読み込むdictConfig()
に渡すタスク
logging.conf
を作る関連