طباعة Stacktrace في Pyhton Log

Tba T Stacktrace Fy Pyhton Log



يتم تمثيل مجموعة من استدعاءات النهج في لحظة معينة في Stacktrace. عندما يثير برنامج استثناءً ، تنشئ Python تتبعًا مكدسًا ، يُعرف أيضًا باسم traceback أو backtrace. هناك مجموعة متنوعة من التفاصيل في هذا التتبع يمكن استغلالها لتحديد موقع المشكلة. تأتي حزمة تسجيل بايثون مع العديد من الميزات الأساسية ولديها مستويات متعددة من التسجيل بما في ذلك 'تصحيح' و 'معلومات' و 'تحذير' و 'خطأ' و 'حرج'.

مثال 1: Print Stacktrace في Python عن طريق استخدام وحدة التتبع

في هذا المثال ، سنستخدم جزءًا بسيطًا من التعليمات البرمجية لشرح كيفية تنفيذ وحدة التتبع في Python لطباعة تتبع المكدس. تتضمن حزمة التتبع هذه ميزة محبوبة للغاية لجمع آثار المكدس وتخزينها وعرضها من لغات الكمبيوتر. إنه يكرر بأمانة عمليات طباعة تتبع مكدس البرنامج النصي. إذا احتجت في أي وقت إلى عرض تتبع المكدس ، فمن الضروري.

بمعنى آخر ، يعرض تتبع المكدس كل عملية جاءت قبل العملية التي أدت إلى المشكلة. يتم دائمًا الإبلاغ عن المعلومات الأكثر أهمية في السطر الأخير من تتبع المكدس ، وهو عندما يتم تحديد الخطأ. يمكن استخدام جميع استدعاءات الوظائف في الخطأ الناتج لتحديد المشكلة وحلها بسرعة.







لنبدأ بتنفيذ الكود من خلال استيراد مكتبة traceback Python. ثم ، في السطر التالي ، نقوم بإنشاء مصفوفة وسرد العناصر ببعض القيم. قيم قائمة المصفوفة هي '7' و '8' و '9' و '10'. توجد أربع قيم في قائمة الصفيف. تم حفظ قائمة المصفوفات هذه في المتغير الذي تمت تهيئته مسبقًا 'A'.



بعد ذلك ، نستخدم المصطلح 'try' والقيمة 'A = 6' في السطر التالي. نحن نستخدم كتل try-except في Python لإدارة الاستثناءات. يتم استخدام هذا الأسلوب لكتابة البرنامج النصي الذي قد يؤدي إلى حدوث خطأ في رأس الكتلة. الاستثناءات هي في الأساس أخطاء تشبه أخطاء بناء الجملة. أثناء استثناء أحد البرامج ، تعتبر معالجة الاستثناءات هي الفعل الفريد للاستجابة للاستثناء. بالعودة إلى البرنامج النصي ، نستخدم 'باستثناء' في السطر التالي.



في كتلة الاستثناء ، نستخدم 'traceback.print exc ()' وهي اختصار لعبارة 'استثناء الطباعة'. نستخدم وظيفة “print ()” داخل مربع الاستثناء وهو “program end” بحيث تتم طباعة هذه العبارة عند ظهور الاستثناء. الآن ، في حالة حدوث استثناء في مربع try ، ينتقل البرنامج على الفور إلى الكتل باستثناء ويستمر. في حالة عدم حدوث استثناء ، يتم تخطي كتلة الاستثناء بالكامل. الآن بعد حدوث الاستثناء ، يمكننا أن نرى في الكود أن القيمة '6' قد تم إدخالها في مربع try على الرغم من أنها ليست في قائمة الصفيف. نتيجة لذلك ، ينتقل الرمز فورًا إلى مربع الاستثناء ويطبع عبارة 'البرنامج ينتهي' في عرض الإخراج.





يتم ترتيب استدعاءات الوظائف المختلفة التي تشكل التتبع من الأحدث إلى الأحدث ، من الأسفل إلى الأعلى. يتم تمثيل جميع هذه العمليات ببيانات من سطرين. تبدأ كل مكالمة باسم الملف ورقم التسلسل واسم الوحدة ، وكلها تشير إلى موقع الرمز. بعد ذلك ، يعرض استثناء طباعة عبارة 'نهاية البرنامج' لأن القيمة '6' لم تكن في القائمة المُعلنة ، مما ينتج عنه إخراج 'قائمة الفهرس خارج النطاق'.



مثال 2: Print Stacktrace في Python عن طريق استخدام أسلوب Logging.Exception ()

في هذا المثال ، سنشرح كيفية استخدام طريقة 'logging.exception ()' في Python لإخراج تتبع تراكمي. تتيح لنا حزمة التسجيل في Python تسجيل الأخطاء وكذلك تسجيل الأخطاء والاستثناءات. تمنحنا وحدات التسجيل مجموعة مختارة من وحدات التسجيل بما في ذلك 'التصحيح' و 'المعلومات' و 'التحذير' و 'الخطأ' و 'الحرجة'. هذه هي في الأساس طبقات من وحدات التسجيل ، ببساطة. لتسجيل استثناء مع وجود خطأ في Python ، استخدم وظيفة 'logging.exception ()'. تضيف هذه الوظيفة تقريرًا بحالة الخطأ إلى المسجل. يُعتقد أن المعلمات مخصصة لتصحيح الأخطاء. المعلومات حول الاستثناء مرفقة بتقرير التسجيل. يجب أن يكون الموقع الوحيد الذي سيتم استدعاء هذا الإجراء منه معالجات الاستثناءات.

الآن ، دعونا نلقي نظرة على الكود. أولاً ، نقوم باستيراد مكتبتين - أولهما التسجيل والثاني هو traceback. بعد ذلك ، نستخدم طريقة 'basicConfig' مع 'تسجيل الدخول' ونحدد المستوى على أنه 'logging.Debug'. الحجة الوحيدة التي يستخدمها أسلوب 'getLogger ()' هي 'الاسم'. وبالتالي ، نستخدمها عند استخدام وظيفة “logging.getlogger”. إذا تم إعطاء اسم ، يتم إنشاء مرجع إلى مثيل المسجل بهذا الاسم ؛ خلاف ذلك ، يتم إرجاع الجذر. تتم الإشارة إلى نفس كائن المسجل بواسطة العديد من عمليات getLogger () بنفس الهوية.

بعد ذلك ، نستخدم المحاولة ، وكما نعلم في كتلة try ، نكتب الكود الذي قد يثير استثناءً. في هذه الحالة ، نستخدم 'myfunction ()'. في حالة عدم تطابق الموقف المحدد ، يحدث استثناء. بعد ذلك ، ينتقل الرمز فورًا إلى كتلة الاستثناء. في مدونة الاستثناء هذه ، نستخدم 'logging.info'. داخلها ، نكتب الرسالة التي نريد طباعتها وهي 'حدث استثناء'. هذا لأنه في حالة حدوث استثناء ، يحدث خطأ ببساطة ثم يعرض هذه الرسالة على الشاشة. ولكن إذا لم يحدث الخطأ ، فإنه يتجاهل رسالة الاستثناء بأكملها.

قمنا أيضًا بتعيين 'معلومات إضافية = صحيح' مع الرسالة. سيتم تضمين كل تتبع المكدس في التسجيل عندما يتم تعيين معلومات exc على True ، على غرار ما يحدث مع 'logger.exception ()'. الاختلاف الوحيد هو أنه يمكنك بسرعة تبديل مستوى السجل من الخطأ إلى شيء آخر بمجرد تبديل المسجل.

الآن وقد حدث استثناء في النص البرمجي ، فإن السطر الأول من الإخراج هو رسالة 'حدث الاستثناء' متبوعًا بمستوى التسجيل الذي تم استخدامه في النص البرمجي وهو 'معلومات'. يظهر اسم المسجل كجذر في هذه الحالة. بعد ذلك ، يظهر استدعاء التتبع ، ويعرض أسماء الوحدة والخط والملف. أخيرًا ، لم يتم تعريف رسالة الخطأ 'وظيفتي'.

دعنا نتحدث عن المزيد من التعليمات البرمجية التي تستخدم التسجيل. يبدأ أسلوب الاستثناء () باستيراد المكتبة للتسجيل. بعد ذلك ، يتم تهيئة متغيرين - 'm' و 'n' - ويتم إعطاء قيمتي '7' و '0' ، على التوالي. يتم الآن استخدام كتلة try في الخطوة التالية. بداخله ، نكتب الكود الذي قد يتسبب في حدوث استثناء. أولاً ، نعلن المتغير 'o'. ثم قمنا بتعيين 'م' على 'ن'. هذا يسبب استثناء لأن المقام هو صفر ولا يمكننا قسمة أي رقم على صفر ، مما يعني أن الأخطاء ستظهر. نتيجة لذلك ، ينتقل الكود إلى كتلة الاستثناء حيث يتم استخدام 'logging.error'. الخطأ هو مستوى التسجيل. في حالة حدوث استثناء ، نطبع رسالة أو عبارة تقول ، 'حدث استثناء' وقمنا بتعيين 'معلومات إضافية = صحيح'. إذا لم نقم بتعيينها على true ، فإنها تطبع كتلة الاستثناء فقط ولا تعرض معلومات التتبع.

نظرًا لأننا اخترنا المستوى 'ERROR' في البرنامج النصي الخاص بنا ، فإنه يعرض أولاً الجذر كاسم للمسجل ، متبوعًا برسالة 'حدث استثناء'. ثم يتم عرض معلومات التتبع التي تضمنت اسم الملف ورقم السطر والوحدة النمطية. يعرض السطر التالي بعد ذلك إشعار خطأ لأن المقام لا يمكن أن يكون صفراً. ونظرًا لأن المقام يساوي صفرًا في هذا الرمز ، يُشار إلى الخطأ بأنه خطأ مقسوم عليه صفري.

استنتاج

في هذه المقالة ، نظرنا في عملية طباعة تتبع مكدس في سجل بايثون وكذلك كيفية استخدام وحدة التتبع لإنشاء تتبع مكدس. في المثال الأول ، تم استيراد مكتبة traceback وتم استخدام طرق try and except. تمت كتابة الرمز في صندوق المحاولة. في حالة حدوث استثناء ، ينتقل بسرعة إلى كتلة الاستثناء ويعرض عبارة الاستثناء على الشاشة. في المثال الثاني ، استخدمنا التسجيل الذي يشبه المثال الأول. تستخدم طريقة الاستثناء () مستويي 'المعلومات' و 'الخطأ' للتسجيل. في حالة حدوث استثناء ، فإنه يعرض عبارة استثناء.