Cetak Stacktrace di Pyhton Log

Cetak Stacktrace Di Pyhton Log



Kumpulan panggilan pendekatan pada saat tertentu direpresentasikan dalam stacktrace. Saat sebuah program memunculkan pengecualian, Python menghasilkan stacktrace, juga dikenal sebagai traceback atau backtrace. Ada berbagai detail di stacktrace ini yang bisa dimanfaatkan untuk menemukan masalahnya. Paket logging Python hadir dengan beberapa fitur mendasar dan memiliki beberapa level logging termasuk 'debug', 'info', 'warning', 'error', dan 'critical'.

Contoh 1: Mencetak Stacktrace dengan Python dengan Memanfaatkan Modul Traceback

Dalam contoh ini, kami akan menggunakan potongan kode sederhana untuk mendemonstrasikan cara mengimplementasikan modul traceback Python untuk mencetak pelacakan tumpukan. Paket trackback ini menyertakan fitur yang sangat disukai untuk mengumpulkan, menyimpan, dan menampilkan jejak tumpukan dari bahasa komputer. Ini dengan setia menduplikasi operasi pencetakan jejak tumpukan skrip. Jika Anda perlu melihat jejak tumpukan, itu penting.

Dengan kata lain, pelacakan tumpukan menampilkan setiap operasi yang dilakukan sebelum operasi yang menimbulkan masalah. Informasi terpenting selalu dilaporkan pada baris terakhir dari pelacakan tumpukan, yaitu saat kesalahan diidentifikasi. Semua pemanggilan fungsi dalam kesalahan yang dihasilkan dapat digunakan untuk menemukan dan menyelesaikan masalah dengan cepat.







Mari kita mulai dengan mengimplementasikan kode dengan mengimpor library traceback Python. Kemudian, di baris berikut, kita membuat array dan mencantumkan elemen dengan beberapa nilai. Nilai daftar larik adalah “7”, “8”, “9”, dan “10”. Ada empat nilai dalam daftar array. Daftar array ini disimpan dalam variabel 'A' yang sebelumnya diinisialisasi.



Setelah itu, kami menggunakan istilah 'coba' dan nilai 'A=6' di baris berikut. Kami menggunakan blok coba-kecuali di Python untuk mengelola pengecualian. Pendekatan ini digunakan untuk menulis skrip yang dapat menimbulkan error di header blok. Pengecualian pada dasarnya adalah kesalahan, mirip dengan kesalahan sintaksis. Selama pengecualian suatu program, penanganan pengecualian adalah tindakan unik untuk menanggapi pengecualian. Kembali ke skrip, kami menggunakan 'kecuali' di baris berikutnya.



Di blok exception, kita menggunakan “traceback.print exc()” yang merupakan kependekan dari “printing exception”. Kami menggunakan fungsi 'print ()' di dalam kotak pengecualian yang merupakan 'akhir program' sehingga pernyataan ini dicetak ketika pengecualian muncul. Sekarang, jika pengecualian terjadi di kotak percobaan, program segera berpindah ke blok kecuali dan melanjutkan. Jika pengecualian tidak terjadi, blok pengecualian dilewati seluruhnya. Sekarang pengecualian terjadi, kita dapat melihat dalam kode bahwa nilai '6' dimasukkan ke dalam kotak percobaan meskipun tidak ada dalam daftar larik. Hasilnya, kode langsung masuk ke kotak pengecualian dan mencetak pernyataan “program ends” di tampilan keluaran.





Panggilan fungsi berbeda yang membentuk traceback diurutkan dari yang terbaru hingga yang terbaru, dari bawah ke atas. Semua operasi ini diwakili oleh pernyataan dua baris. Setiap panggilan dimulai dengan nama file, nomor urut, dan nama modul, yang semuanya menunjukkan lokasi kode. Setelah itu, ini menampilkan pernyataan cetak pengecualian 'akhir program' karena nilai '6' tidak ada dalam daftar yang dinyatakan, yang menghasilkan keluaran 'indeks daftar di luar jangkauan'.



Contoh 2: Mencetak Stacktrace dengan Python dengan Memanfaatkan Metode Logging.Exception()

Dalam contoh ini, kami akan mendemonstrasikan cara menggunakan metode 'logging.exception()' Python untuk menghasilkan stacktrace. Paket logging di Python memungkinkan kita mencatat kesalahan serta merekam kesalahan dan pengecualian. Modul logging memberi kita pilihan modul logging termasuk “debug”, “info”, “warning”, “error”, dan “critical”. Ini pada dasarnya adalah lapisan modul logging, sederhananya. Untuk mencatat pengecualian dengan kesalahan di Python, gunakan fungsi “logging.exception()”. Fungsi ini menambahkan laporan dengan status ERROR ke logger ini. Dipercayai bahwa parameternya untuk debugging. Informasi tentang pengecualian dilampirkan pada laporan logging. Satu-satunya lokasi untuk menjalankan prosedur ini adalah penangan pengecualian.

Sekarang, mari kita lihat kodenya. Pertama, kami mengimpor dua pustaka – yang pertama adalah logging dan yang kedua adalah traceback. Kemudian, kami menggunakan metode 'basicConfig' dengan 'logging' dan menentukan levelnya sebagai 'logging.Debug'. Satu-satunya argumen yang diambil oleh metode 'getLogger()' adalah 'nama'. Jadi, kami menggunakannya saat menggunakan fungsi 'logging.getlogger'. Jika sebuah nama diberikan, referensi ke instance logger dengan nama tersebut dihasilkan; jika tidak, root dikembalikan. Objek logger yang sama direferensikan oleh banyak operasi getLogger() dengan identitas yang sama.

Kemudian, kita gunakan untuk mencoba, dan seperti yang kita ketahui di dalam blok try, kita menulis kode yang mungkin memunculkan exception. Dalam hal ini, kami menggunakan 'myfunction()'. Jika situasi yang diberikan tidak cocok, pengecualian akan terjadi. Kemudian, kode tersebut langsung melompat ke blok kecuali. Di blog pengecualian ini, kami menggunakan “logging.info”. Di dalamnya kita menulis pesan yang ingin kita cetak yaitu “pengecualian terjadi”. Ini karena jika pengecualian terjadi, kesalahan terjadi begitu saja kemudian menampilkan pesan ini di layar. Tapi jika kesalahan tidak terjadi, itu akan mengabaikan seluruh pesan pengecualian.

Kami juga menyetel 'exc info=True' dengan pesan tersebut. Seluruh stacktrace akan disertakan dalam logging saat info exc disetel ke True, mirip dengan yang terjadi dengan “logger.exception()”. Satu-satunya perbedaan adalah Anda dapat dengan cepat mengalihkan level log dari kesalahan ke hal lain hanya dengan menukar logger.

Sekarang pengecualian terjadi dalam skrip, baris pertama keluaran adalah pesan 'pengecualian terjadi' diikuti oleh tingkat pencatatan yang digunakan dalam skrip yaitu 'info.' Nama logger muncul sebagai root dalam kasus ini. Kemudian, panggilan traceback muncul, menampilkan nama modul, baris, dan file. Akhirnya, pesan kesalahan 'myfunction' tidak ditentukan.

Mari kita bicara tentang beberapa kode lagi yang menggunakan logging. Metode exception() dimulai dengan mengimpor library untuk logging. Selanjutnya, dua variabel – “m” dan “n” – diinisialisasi dan diberi nilai masing-masing “7” dan “0”. Blok try sekarang digunakan pada langkah berikutnya. Di dalamnya, kami menulis kode yang dapat menyebabkan pengecualian. Pertama, kita mendeklarasikan variabel “o”. Kemudian, kami mengatur bahwa 'm' dibagi dengan 'n'. Ini menyebabkan pengecualian karena penyebutnya nol dan kami tidak dapat membagi angka apa pun dengan nol, yang berarti kesalahan akan muncul. Akibatnya, kode melompat ke kecuali blok tempat 'logging.error' digunakan. Kesalahan adalah tingkat logging. Jika terjadi pengecualian, kami mencetak pesan atau pernyataan yang menyatakan, “pengecualian terjadi” dan kami menyetel “exc info=true”. Jika kita tidak menyetelnya ke true, itu hanya mencetak blok pengecualian dan tidak menampilkan informasi traceback.

Karena kami memilih level 'ERROR' dalam skrip kami, ini pertama-tama menampilkan akar sebagai nama logger, diikuti dengan pesan 'terjadi pengecualian'. Informasi traceback yang menyertakan nama file, nomor baris, dan modul kemudian ditampilkan. Baris berikutnya kemudian menampilkan pemberitahuan kesalahan karena penyebutnya tidak boleh nol. Dan karena penyebutnya nol dalam kode ini, kesalahannya disebut sebagai kesalahan pembagi nol.

Kesimpulan

Pada artikel ini, kita melihat proses mencetak stacktrace di log Python serta cara menggunakan modul traceback untuk membuat stack trace. Pada contoh pertama, pustaka traceback diimpor dan metode coba dan kecuali digunakan. Kode ditulis di kotak percobaan. Jika pengecualian terjadi, ia dengan cepat melompat ke blok pengecualian dan menampilkan pernyataan pengecualian di layar. Pada contoh kedua, kami menggunakan logging yang mirip dengan contoh pertama. Metode exception() menggunakan level logging “info” dan “error”. Jika pengecualian terjadi, ini akan menampilkan pernyataan pengecualian.