【Python】第8章第14回:ロギングとエラーハンドリング
本記事では、Pythonでのロギングとエラーハンドリングの基礎を学びます。プログラムのデバッグやエラー管理の方法を学び、堅牢なアプリケーション開発に役立てましょう。
0. 記事の概要
この記事を読むメリット
- ロギングの基礎を理解:プログラムの動作を追跡しやすくなります。
- エラーハンドリングのスキル向上:例外処理のベストプラクティスを学べます。
- プログラムの信頼性を向上:エラーに強いコードを書くためのスキルを習得できます。
この記事で学べること
- ロギングの重要性と基本概念
- Pythonの標準ロギングモジュールの使い方
- エラーハンドリングと例外処理のベストプラクティス
1. ロギングの基本とは?
1.1 ロギングの目的
ロギングとは、プログラムの動作やエラー情報を記録する仕組みです。以下の目的で使用されます。
- デバッグ: プログラムの不具合を特定。
- 監視: プログラムの状態を把握。
- エラー検出: 問題発生時に迅速に対応。
1.2 ロギングの種類
ロギングには以下のような種類があります。
- デバッグログ: 開発時の詳細情報。
- 情報ログ: プログラムの進行状況。
- エラーログ: エラー発生時の情報。
2. Python標準ロギングモジュールの使い方
2.1 ロギングの基本例
# loggingモジュールの基本例
import logging
logging.basicConfig(level=logging.INFO) # ログレベルを設定
logging.debug("デバッグ情報") # 表示されない
logging.info("情報ログ")
logging.warning("警告ログ")
logging.error("エラーログ")
logging.critical("重大なエラー")
2.2 ログをファイルに出力する
# ログをファイルに保存
logging.basicConfig(filename='app.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
logging.info("このログはファイルに記録されます")
動作解説
- basicConfig: ロギングの基本設定(ログレベル、フォーマット、出力先)。
- ログレベル: 重要度に応じてログをフィルタリング。
- ログのフォーマット: タイムスタンプやメッセージ内容をカスタマイズ可能。
3. エラーハンドリングと例外処理
3.1 例外処理の基本
# try-except構文の基本例
try:
result = 10 / 0
except ZeroDivisionError as e:
logging.error(f"エラー発生: {e}")
finally:
print("終了処理")
3.2 ユーザー定義例外
# ユーザー定義例外の例
class CustomError(Exception):
pass
try:
raise CustomError("カスタムエラーが発生しました")
except CustomError as e:
logging.critical(f"重大なエラー: {e}")
4. 練習問題
以下の課題に挑戦してみましょう。
- 警告ログを出力するスクリプトを作成してください。
- 0で割る操作を例外処理で防ぎ、エラーログを記録してください。
- ログを日付ごとに分割して保存する仕組みを実装してください。
5. 練習問題の解答と解説
問3の解答例
# ログを日付ごとに保存
from logging.handlers import TimedRotatingFileHandler
handler = TimedRotatingFileHandler("app.log", when="midnight", interval=1)
handler.suffix = "%Y-%m-%d"
logging.basicConfig(handlers=[handler], level=logging.INFO)
logging.info("このログは日付ごとに保存されます")
6. まとめ
本記事では、Pythonでのロギングとエラーハンドリングの基本を学びました。これらの技術を活用して、堅牢で保守性の高いプログラムを開発してください。