71:info、errorだけでなくログレベルを使い分ける¶
ログを書くときに logger.info
と logger.error
以外を使っていますか?
ログレベルを使い分けることで、ログの集約と通知がより効果的に行えます。
具体的な失敗¶
import logging
logger = logging.getLogger(__name__)
def main():
...
for row in data:
if not validate_product_data(...):
logger.info("Skipped invalid sales data %r", row["id"])
...
この場合、商品のデータが不正な場合に logger.info
でログ出力してしまっています。
「エラーほどではない」という理由でインフォレベルのログにすると、何かしらのアクションが必要な場合でも気づけないことが多いでしょう。
ベストプラクティス¶
このようにエラーとも言い切れない場合は logger.warning
レベルを使いましょう。
(中略)詳細は書籍 自走プログラマー をご参照ください
ではログレベルはどのように設定すべきでしょうか? ログレベルは以下を参考にしてください。
デバッグ(
debug
):ローカル環境で開発するときだけ使う情報インフォ(
info
):プログラムの状況や変数の内容、処理するデータ数など、後から挙動を把握しやすくするために残す情報ワーニング(
warning
):プログラムの処理は続いているが、何かしら良くないデータや通知すべきことについての情報エラー(
error
):プログラム上の処理が中断したり、停止した場合の情報クリティカル(
critical
):システム全体や連携システムに影響する重大な問題が発生した場合の情報
(中略)詳細は書籍 自走プログラマー をご参照ください