Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh Log Pengecualian Tidak Terkendali dalam Python Menggunakan Modul Pengelogan?
Melainkan dikendalikan secara eksplisit, pengecualian Python dikeluarkan secara lalai kepada aliran ralat standard program (stderr). Walau bagaimanapun, mungkin terdapat keadaan apabila pengecualian yang tidak ditangkap adalah wajar untuk dilog menggunakan modul pengelogan sebaliknya.
Pendekatan tradisional untuk mengelog pengecualian tidak ditangkap adalah dengan menggunakan kaedah logging.exception(e) secara manual dalam blok except , seperti yang ditunjukkan di bawah:
<code class="python">try: raise Exception, 'Throwing a boring exception' except Exception, e: logging.exception(e)</code>
Walau bagaimanapun, menggunakan logging.exception(...) secara automatik untuk setiap pengecualian yang tidak ditangkap menghapuskan langkah manual.
Pertimbangkan coretan kod berikut:
<code class="python">import sys import logging # Custom logger with handler for stdout logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # Custom exception handler to log uncaught exceptions def handle_exception(exc_type, exc_value, exc_traceback): # Ignore KeyboardInterrupt for Ctrl + C exit if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) # Assign custom exception handler sys.excepthook = handle_exception if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
Skrip yang diubah suai ini mencapai beberapa tugas utama:
Dengan mengatasi pengendali pengecualian lalai dengan handle_exception, pengecualian tidak ditangkap secara automatik dilog menggunakan logger yang dikonfigurasikan, meningkatkan keterlihatan dan memudahkan penyahpepijatan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Log Pengecualian Tidak Terkendali dalam Python Menggunakan Modul Pengelogan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!