February 24, 2010
loggingモジュールで複数の出力先に別のログレベルで出力する - ytokuがつまづいた跡

しかし、それよりもbaseConfigメソッドで目についた所があった。if len(root.handlers) == 0:である。どうやらハンドラが登録されていればこのメソッドは丸ごと不要らしい。baseConfigは呼び出さなければならないという固定観念にとらわれていたが、確かに考えてみると複数ハンドラを登録して、ロガーのレベルを設定してやれば別に呼び出す必要はない。というわけで次のように書くことでやりたいことを実現できた。

import logging    logging.getLogger('').setLevel(logging.DEBUG)    logfile=logging.FileHandler("/tmp/test-logfile", "w")  logfile.setLevel(logging.INFO)  logging.getLogger('').addHandler(logfile)    console=logging.StreamHandler();  console.setLevel(logging.WARNING)  logging.getLogger('').addHandler(console)    logging.debug('A debug message')  logging.info('Some information')  logging.warning('A shot across the bows')

Posted via web from hdknr’s posterous | Comment »