Pythonのロギングモジュールでのカスタムエラー処理
を保証することができます。 Pythonアプリケーション。例外を手動でキャッチして記録することは実行可能なアプローチですが、退屈でエラーが発生しやすい場合があります。これは、詳細な例外情報をキャプチャして記録する便利で体系的な方法を提供します。カスタム例外ハンドラーを定義することにより、すべての猛攻撃の例外を傍受し、必要に応じてそれらを処理できます。これは、完全で堅牢な例です ロギングをインポートします logger = logging.getLogger(__ name__) Handler = Logging.StreamHandler(Stream = sys.stdout) logger.addhandler(ハンドラー) def handle_exception(exc_type、exc_value、exc_traceback): #キーボードinterruptを無視して、アプリケーションがctrl cで終了できるように issubclass(exc_type、keyboardinterrupt)の場合: sys .__ excepthook __(exc_type、exc_value、exc_traceback) 戻る #excaughtの例外を記録します logger.error( "Uncaught Exception"、exc_info =(exc_type、exc_value、exc_traceback))) sys.excepthook = handle_exception #カスタム例外処理をテストするコードの例 __name__ == "__main__"の場合: Raise runtimeerror( "test unhandled")
説明
このコード:
は、呼び出されるカスタム例外ハンドラー、handle_exceptionを定義します。著名な例外が発生した場合。 ] Custom Excepthook関数にカスタム例外ハンドラーを添付します。構成されたハンドラーに例外の詳細を介入して記録します。この場合、デフォルトのストリームハンドラーは、例外情報をstdoutに出力するために使用されます。
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")
フィルタリング:サブクラスチェックを使用して、特定のタイプの例外(例えば、キーボード段階)を無視します。例外ログの出力形式と宛先を制御するハンドラー。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3