« 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