NISHIO Hirokazu[日本語][English]

✅デバッグ出力にloggingを使う

printでデバッグ出力して、目的のものを表示するのに手間だったから消すのを惜しく感じてコメントアウトで残し、また必要になった

  • そういうのはprintではなくloggingを使うと良い
    • before action.py
score = score_for_single_arg_question(env, qid, k, maxScore)
# print(repr(questions[qid](env, (k,))), k, score)
- after

action.py

import logging
logger = logging.getLogger(__name__)
...
logger.debug((res, k, score))
    - ここでの本題と違うが[✅質問候補のデバッグ表示を見やすくする](/ja/%E2%9C%85%E8%B3%AA%E5%95%8F%E5%80%99%E8%A3%9C%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E8%A1%A8%E7%A4%BA%E3%82%92%E8%A6%8B%E3%82%84%E3%81%99%E3%81%8F%E3%81%99%E3%82%8B)ために関数にくくりだした

そのモジュールを呼び出す側のコードで、特定の条件が満たされた時だけログレベルをDEBUGにすると、その時だけデバッグ出力される

  • action.pyの__name__がパッケージ階層を表現した"server.keicho.action"になってるので、それを使ってソースコード全体の中から一部を選んでデバッグ表示のON/OFFをできる python
import logging
logging.basicConfig()
...
if some_condition:
    logging.getLogger("server.keicho.action").setLevel(logging.DEBUG)
else:
    logging.getLogger("server.keicho.action").setLevel(logging.INFO)

(C)NISHIO Hirokazu / Converted from Markdown (ja)
Source: [GitHub] / [Scrapbox]