« 04.04 4月も端から忙しい | ココ | 04.07 Pylons, CGI driven AuthKit Basic Auth »
2009年4月 6日
Pylons, CGI driven and logging
Undocumented Windowsならぬ、Undocumented pasteです。
paster server なら、フツーにloggingでログの出力を操作するのにdevelopment.iniで変更できるんでしょうけど、plain CGIで動かしていると、デフォルトで設定されているerror.log以外はまったくログが出てこない。apacheのログにでも出てるのかと思って開いてみるも、やっぱり出てこず。
代わりに、"No handlers could be found for logger "module.name""なんて出てるんですケド。これって、一体どういうことなんですかね、ハンドラがないって。
logging.basicConfigをindex.cgiで実行したら、ようやくapacheのログにテキストが出力されるようになった。そして、さらにインターネットの大海原を捜しまくった挙句にたどり着いたのが以下。これで、console以外のハンドラとしてFileHandlerで作ったログの出力先を指定して、tail -f debug.logなんてことができるようになる(CGI駆動で)。
import os
os.chdir('/home/path/to/project')
from paste.script.util.logging_config import fileConfig
fileConfig('/home/path/to/project/development.ini')from paste.deploy import loadapp
wsgi_app = loadapp('config:/home/path/to/project/development.ini')
import wsgiref.handlers
wsgiref.handlers.CGIHandler().run(wsgi_app)
logging.config.fileConfig で読み込ませることができる設定ファイルと、development.iniで書いている設定ファイルは微妙に形式が異なり、しかもlogging.config.fileConfig用の形式に準拠していないらしく、logging.config.fileConfigでdevelopment.iniを読み込ませてもエラーが出てくる。paste.script.util.logging_config.fileConfigでないとダメらしい。ビミョーすぎですこの仕様。
というか、もっとビミョーやと思うのは、どこにも書いてないloggingの挙動やねんけどナ。debug=falseならLoggerが準備されないなんて、そんなこと当たり前なんやろうか。
By ただ at 23:50 カテゴリー ; プログラミングとか
« 04.04 4月も端から忙しい |
04月の記事
| 04.07 Pylons, CGI driven AuthKit Basic Auth »
トラックバック
このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1394