48

Python で logging モジュールを次のように使用しています。

import logging, sys
logger= logging.getLogger(__file__)
logging.basicConfig(stream = sys.stderr, level=logging.DEBUG, format='%(filename)s:%(lineno)s %(levelname)s:%(message)s')
logger.debug("Hello World")

で基本構成を設定した後line 3、出力ストリームを sys.stderr からファイルに変更できるコマンド ライン引数が必要です。

ドキュメントを読んだところ、 と の両方が同時に存在する場合filenamestreamstream無視されると書かれています。

さて、私はbasicConfigすでにline 3.

4

1 に答える 1

90

の Python ソースを見ると、 を呼び出してルート ロガー オブジェクトにハンドラlogging/__init__.pyを設定していることがわかります。ゼロから始めたい場合は、既存のハンドラーをすべて削除してから、再度呼び出すことができます。basicConfig()addHandler()basicConfig()

# Example to remove all root logger handlers and reconfigure. (UNTESTED)
import logging

# Remove all handlers associated with the root logger object.
for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

# Reconfigure logging again, this time with a file.
logging.basicConfig(filename = 'myfile.log', level=logging.DEBUG, format='%(filename)s:%(lineno)s %(levelname)s:%(message)s')
于 2012-08-28T11:24:26.167 に答える