Python のログ モジュールを使用したカスタム エラー処理
キャッチされなかった例外が適切に処理され、ログに記録されることを確認することは、トラブルシューティングと安定性の維持にとって重要です。 Python アプリケーション。手動で例外をキャッチしてログに記録することは実行可能なアプローチですが、面倒でエラーが発生しやすい可能性があります。
この問題に対処するために、Python ではデフォルトの例外処理メカニズムをオーバーライドし、キャッチされなかった例外をログ モジュールにリダイレクトできます。これにより、詳細な例外情報を取得してログに記録するための便利で体系的な方法が提供されます。
解決策
提示された問題は、グローバル sys.Excepthook 関数を変更することで解決できます。カスタム例外ハンドラーを定義すると、キャッチされなかった例外をすべてインターセプトし、必要に応じて処理できます。完全で堅牢な例を次に示します。
<code class="python">import sys import logging logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) def handle_exception(exc_type, exc_value, exc_traceback): # Ignore KeyboardInterrupt so the application can exit with Ctrl + C if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return # Log the uncaught exception logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) sys.excepthook = handle_exception # Example code to test the custom exception handling if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
説明
このコード:
キャッチされない例外が発生すると、カスタム例外ハンドラーが介入し、設定されたハンドラーに例外の詳細を記録します。この場合、デフォルトのストリーム ハンドラーを使用して、例外情報を stdout に出力します。
追加機能
この例には、いくつかのオプション機能も含まれています。
以上がPython のログ モジュールを使用してカスタム例外処理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。