Sat, 25 Feb 2006

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プラグインではログを出力するファイル名の指定にまだこの 変数を使ってました。

これで一応ログが出力されるようになりました。

ここまで調べておいてなんなんだけど、ログって普段あんまり見ないんだけどね。