応用例:「スケジューリングしたパイプラインのログ管理とエラーハンドリング」
定期的に自動実行されるパイプラインは、ログ管理とエラーハンドリングを組み込むことで安定運用できます。これにより「いつ実行されたか」「成功したか」「失敗したか」を記録し、トラブル時に原因をすぐに特定できます。
サンプルコード(ログ+エラーハンドリング付き)
import schedule
import time
import logging
# --- ログ設定 ---
logging.basicConfig(
filename="pipeline.log",
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s"
)
def pipeline():
try:
logging.info("パイプライン開始")
# Step 1: レポート生成
logging.info("レポート生成中...")
# generate_report()
# Step 2: PDF化
logging.info("PDF変換中...")
# convert_to_pdf()
# Step 3: メール送信
logging.info("メール送信中...")
# send_email()
# Step 4: クラウド共有
logging.info("クラウド共有中...")
# upload_to_drive()
logging.info("パイプライン完了")
except Exception as e:
logging.error(f"エラー発生: {e}", exc_info=True)
# 毎日9時に実行
schedule.every().day.at("09:00").do(pipeline)
while True:
schedule.run_pending()
time.sleep(60)
Pythonログファイル出力例(pipeline.log)
2025-12-02 09:00:00 [INFO] パイプライン開始
2025-12-02 09:00:00 [INFO] レポート生成中...
2025-12-02 09:00:01 [INFO] PDF変換中...
2025-12-02 09:00:02 [INFO] メール送信中...
2025-12-02 09:00:03 [INFO] クラウド共有中...
2025-12-02 09:00:05 [INFO] パイプライン完了
エラーが発生した場合は [ERROR] として記録され、exc_info=True によりスタックトレースもログに残ります。
解説ポイント
loggingモジュール → 標準ライブラリでログ管理が可能。- ログレベル →
INFOは通常処理、ERRORは失敗時。 exc_info=True→ エラーの詳細(スタックトレース)を記録。- スケジューリングと組み合わせ → 定期実行の成否をログで確認できる。
応用の場面
- 定期レポート配布 → 成功・失敗をログで確認。
- 障害対応 → エラー発生時にログから原因を特定。
- 監査・記録 → 実行履歴を残して業務管理に活用。
まとめ
- ログ管理を組み込むことで 実行履歴とエラー原因を記録できる。
- エラーハンドリングを加えることで 失敗時も安全に処理が終了する。
- 定期実行パイプラインの安定運用には必須の仕組み。


