4

Pythonの強力なロギング組み込みモジュールでは、たとえば、を呼び出すことにより、レベルより下のすべてのログを無効にすることができますlogging.disable(logging.INFO)

ドキュメントでこの設定をリセットまたは元に戻す方法が見つかりませんでした。

私の目的は、でlogging.disableを呼び出してsetUp()から、で(what?)を呼び出すことにより、単体テストを実行するときに情報とデバッグレベルのログを無効にしてから再度有効にすることですtearDown()

logger注意:giveインスタンスがある場合は、その方法を知っています。保持logger.levelし、レベルを高く設定してから、に戻しtearDown()ます。明示的に選択せずにすべてのロガーをミュートする方法をお勧めします。

4

1 に答える 1

10

答えはlogging.disable(logging.NOTSET)を呼び出すことのようです

import logging

logger = logging.getLogger('testlog')
handler = logging.FileHandler('\\path\\to\\testlog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)

logger.error("some error occurred")
logger.info('some info msg')
logging.disable(logging.ERROR)
logger.info('another info msg')
logging.disable(logging.NOTSET)
logger.info('last info msg')

結果は、次の出力のログファイルになります。

2012-05-17 11:09:24,441 ERROR some error occurred
2012-05-17 11:09:24,443 INFO some info msg
2012-05-17 11:09:24,443 INFO last info msg
于 2012-05-17T15:10:51.353 に答える