Python のログ モジュールを使用しようとすると、プログラムを正常にクラッシュさせる代わりに、例外をキャッチしてエラーを出力するようです。
ロギングを初期化するには、次のようにします。
logging.basicConfig(level=logging.DEBUG)
これで、すべての情報と警告メッセージを取得できましたが、これに加えて、エラーが発生すると、それがキャッチされて「エラー」ログ メッセージとして出力されるようです。
ERROR:root:'bool' object is not iterable
これにより、私の側で2つの問題が発生します。
- スタック トレースが表示されません。
- プログラムは実行を続けます。
ログを有効にしていないかのようにプログラムがスタック トレースでクラッシュするように、この動作を無効にする方法はありますか?
編集
私はアホです。例外をキャッチしていたのはロギングではありませんでした。それは websocket-client モジュールでした。より具体的には、これらの行:
except Exception, e:
self._run_with_no_err(self.on_error, e)
def _run_with_no_err(self, callback, *args):
if callback:
try:
callback(self, *args)
except Exception, e:
if logger.isEnabledFor(logging.DEBUG):
logger.error(e)
たまたまログを有効にしたときにこの動作に気づき、2 つが接続されているとは思いませんでした。