pyblosxom 1.3系でのログ関数
sh1.2 pyblosxom : Pyblosxom 1.3.1へupdate に書いたように1.2系と1.3系で log関数が変わった。一応対応した気になってたんだけど1.3系にupdateした後 ずっとログが蓄積されてないんだよねー。ということで、ちょっと調べてみた。
どうやら1.2系と1.3系ではログ関数の名前が変わっただけじゃなくて、 ログ取得方式というか考え方自体が変わってるようだ。
- 1.2系では
各プラグインごとにログを保存するファイル名を定義して、それぞれのプラグインが 好きなようにやったらいいよ。ログを出力する関数くらいは提供するからね。
# cb_start内にて tools.make_logger(logfile) # cb_prepare内にて tools.log(message)
- 1.3系では
python2.3で新たに追加されたloggingモジュールを使用。
pyblosxomとしてpy['log_file']で指定する一つのログファイルにログを保持しよう。 出力するログのレベルや、ログを出力するプラグインの制御もconfig.pyを使って pyblosxomから制御できるようにしましょう。
そのために以下の変数がconfig.pyに追加された
- py['log_file'] : ログファイルを指定
- py['log_level'] : 出力するログのレベルを指定
- py['log_filter'] : ログを出力するプラグインの指定
関数の使い方は以下のようにしたらいいみたい。 実際にメッセージを出力する際にそのログの レベルに応じた関数を呼び出す。そうしておくと py['log_level'] で 出力するログのレベルを制御できる。
# cb_start内にて global logger logger = tools.log_caller(1,logfile) # cb_prepare内にて logger.critical(message) logger.error(message) logger.warning(message) logger.info(message) logger.debug(message)
自分のところでは、これでもログが出力されなくてなんでかなー?と思っていたら 1.2系config.pyにのみ存在する py['logdir'] を1.3系で削除したのが原因でした。 comments, trackbackプラグインではログを出力するファイル名の指定にまだこの 変数を使ってました。
これで一応ログが出力されるようになりました。
ここまで調べておいてなんなんだけど、ログって普段あんまり見ないんだけどね。

