print()
でデバッグ出力するべきではない。あとで外すのが面倒で,間違えて必要な print()
まで外す可能性もある。
そんなときは logging という仕組みを使う(Logging HOWTO も参照)。
次の例はコマンドラインオプション --debug
を付けたときだけデバッグ出力する。
#! /usr/bin/env python3
import logging
import sys
if "--debug" in sys.argv:
logging.basicConfig(level=logging.DEBUG)
print("ふつうのprint")
logging.debug("デバッグメッセージ")
デバッグメッセージの前には DEBUG:root:
のような文字列が付く。これを日時にするには次のようにする:
logging.basicConfig(format='%(asctime)s:%(message)s',
level=logging.DEBUG)
ロギングのレベルは logging.DEBUG
< logging.INFO
< logging.WARNING
< logging.ERROR
< logging.CRITICAL
の5段階があり,これらに対応して logging.debug()
< logging.info()
< logging.warning()
< logging.error()
< logging.critical()
がある。デフォルトのレベルは logging.WARNING
で,そのレベル以上のものが出力される。
サードパーティのライブラリを呼び出すと,その中で大量のデバッグメッセージが出力されることがある。そういうときは,その直前で例えば logging.disable(logging.INFO)
とすると,それ以降は logging.INFO
以下のメッセージを出力しない。logging.disable(logging.NOTSET)
で当初の logging.basicConfig()
で設定したレベルに戻る。
Last modified: