Python 2.4以降では、より基本的なフォーマットを持つようにロギングモジュールを構成するのは簡単です。
logging.basicConfig(level = opts.LOGLEVEL、format = "%(message)s")
しかし、Python 2.3をサポートする必要のあるアプリケーションの場合、ロギングAPIがPy2.4でオーバーホールされたため、より難しいように思われます。特に、basicConfigは引数を取りません。Py2.3ドキュメントの唯一の例のバリエーションを試してみると、次のようになります。
try:
logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
logging.getLogger().setLevel(opts.LOGLEVEL)
h = logging.StreamHandler()
h.setFormatter(logging.Formatter("%(message)s"))
logging.getLogger().addHandler(h)
しかし、Py2.3でこのルートロガーを呼び出す、例えば
logging.info("Foo")
重複した出力を提供します:
Foo
INFO:root:Foo
Py2.3のルートロガーの既存のハンドラーの形式を変更する方法が見つかりません(上記の「except」ブロック)。したがって、重複した出力を生成する「addHandler」呼び出しがあります。この重複なしにルートロガーのフォーマットを設定する方法はありますか?ありがとう!