組み込み開発のためのPython · レッスン 208 / 220
loggingで再現可能な記録を残す
時刻・レベル・条件をログに記録し、画面表示と調査記録を使い分けます。
後から原因を調べるには、何が起きたかだけでなく、どの条件で起きたかを残す必要があります。用途に合わせたログレベルと、秘密情報を含めない記録方針を作ります。
printからレベル付きログへ
`logging`はDEBUG、INFO、WARNING、ERRORなどの重要度を使い分け、出力形式や保存先を設定できます。通信の生バイトを大量に記録すると、機密情報や容量の問題を生むことがあるため、記録項目と保存期間を決めます。
再現に必要な条件も残す
ログには実行開始時刻、ソフトウェア版、接続先、設定値、タイムアウト、失敗した処理を含めます。ただしパスワード、アクセストークン、個人データは記録しません。複数機器の時刻を比較する場合は、時刻源と時差、単調時計と実時間の使い分けにも注意します。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
)
logger = logging.getLogger("bench.serial")
logger.info("接続開始: port=%s baud=%d", "/dev/ttyUSB0", 115200)
try:
raise TimeoutError("応答待ち")
except TimeoutError:
logger.exception("機器から応答がありません")手を動かす課題
正常接続・再試行・タイムアウトの各状況で、秘密値を含めずに調査可能なログを出してください。