しかし、それよりも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')
via d.hatena.ne.jp