تتعلق مشكلتك بإعدادات تسجيل الأخطاء في Python باستخدام الوحدة النمطية logging، وتحديدًا باستخدام RotatingFileHandler. الهدف هو تحقيق السجل المتداول الذي يقوم بتقسيم الملف إلى أجزاء صغيرة بحجم محدد وحفظها باسماء متتالية.
عند استخدام الكود الذي قدمته، تجد أنه ينشئ ملفين: my_log.log و example.log. الأخير يظهر عندما تقوم بتعليق خط الرمز logging.basicConfig(filename=”example.log”, level=logging.DEBUG).
-
تشغيل Genymotion على openSUSE Leap 42.124/03/2024
-
تحسين تجربة لعبة Number Connect04/03/2024
-
تسريع تحديث خدمة Google App Engine12/04/2024
الحل لهذه المشكلة يكمن في فهم كيفية تصميم تسجيل الأخطاء بشكل صحيح. يمكنك تحقيق هذا عن طريق تحديد الإعدادات المطلوبة مباشرةً على مستوى المسجل (logger)، بدلاً من استخدام logging.basicConfig.
فيما يلي الخطوات التي يمكن اتخاذها لحل المشكلة وتحقيق السجل المتداول المرجو:
-
استخدام مسجل (logger) خاص بك بدلاً من الاعتماد على logging.basicConfig. هذا يتيح لك التحكم الكامل في تكوينات السجل.
-
تحديد RotatingFileHandler على المسجل الخاص بك مع الإعدادات المناسبة لحجم الملف (maxBytes) وعدد النسخ المحفوظة (backupCount).
-
تأكد من تعيين مستوى التسجيل (level) الذي تريده للمسجل.
فيما يلي الكود المعدل بناءً على التوجيهات السابقة:
pythonimport logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG) # تعيين مستوى التسجيل
handler = RotatingFileHandler("my_log.log", maxBytes=2000, backupCount=10)
logger.addHandler(handler)
for _ in range(10000):
logger.debug("Hello, world!")
باستخدام هذا الكود، يجب أن تحصل على السلوك المتوقع من خلال إنشاء ملفات my_log.log فقط، مع تقسيمها وفقًا لإعدادات RotatingFileHandler التي حددتها.
أتمنى أن تكون هذه الإرشادات مفيدة وتساعدك على تحقيق السجل المتداول بنجاح في تطبيقاتك.
المزيد من المعلومات
بالتأكيد، سأواصل المقال لتوضيح المفاهيم بشكل أكبر وتوجيه القراء إلى الاستفادة القصوى من استخدام RotatingFileHandler في Python.
فهم تفاصيل الكود المعدل:
دعنا نلقي نظرة أكبر على الكود المعدل لفهمه بشكل أفضل:
pythonimport logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG) # تعيين مستوى التسجيل
handler = RotatingFileHandler("my_log.log", maxBytes=2000, backupCount=10)
logger.addHandler(handler)
for _ in range(10000):
logger.debug("Hello, world!")
- الخط الأول يستورد وحدة السجل (logging) و RotatingFileHandler التي نحتاجها لتحقيق السجل المتداول.
- في الخطوة التالية، نقوم بتعريف مسجل جديد باسم “my_logger” باستخدام logging.getLogger().
- ثم نقوم بتعيين مستوى التسجيل (level) إلى DEBUG، وهو يعني أننا سنقوم بتسجيل جميع الرسائل التي تكون من مستوى DEBUG أو أعلى.
- بعد ذلك، نقوم بإنشاء معالج (handler) من نوع RotatingFileHandler ونقوم بتحديد اسم الملف وحجم كل ملف (maxBytes) وعدد النسخ المحفوظة (backupCount).
- أخيرًا، نقوم بتضمين المعالج في المسجل الخاص بنا.
فوائد استخدام السجل المتداول:
-
إدارة حجم الملفات: يمكن للسجل المتداول تجنب نمط “الملف الكبير” الذي ينتج عن تسجيل البيانات المستمرة في ملف واحد. بدلاً من ذلك، يتم تقسيم البيانات إلى ملفات صغيرة ومتعددة وفقًا لحجم محدد.
-
توفير مساحة التخزين: من خلال تحديد حجم كل ملف وعدد النسخ المحفوظة، يمكن التحكم في كمية البيانات التي يتم الاحتفاظ بها بشكل فعال، وبالتالي توفير مساحة تخزين.
-
سهولة البحث عن الأخطاء: يجعل السجل المتداول من السهل تحديد وتتبع الأخطاء، حيث يكون لديك ملفات متعددة يمكن البحث فيها بدلاً من ملف واحد ضخم.
استنتاج:
باستخدام السجل المتداول، يمكنك تحسين إدارة السجلات في تطبيقات Python الخاصة بك بشكل كبير. من خلال تحديد حجم الملفات وعدد النسخ المحفوظة، يمكنك تخصيص السجلات لتناسب احتياجات تطبيقك وضمان استمرارية تسجيل البيانات بشكل فعال ومنظم.