البرمجة

تسجيل الأحداث في تطبيق Flask

بمجرد أن تبدأ ببناء تطبيق Flask في Python، قد تواجه تحديات في تسجيل الأحداث والرسائل الخاصة بتشغيل التطبيق وعملياته المختلفة. في سياق تطبيق Flask، يتم تكوين سجلات الحدث عادة داخل الوحدة الرئيسية للتطبيق، وهو الملف الذي يُعرف بالنمطية باسم “main” أو “entry point” للتطبيق.

في سؤالك، قدمت مثالاً على كيفية تكوين مُسجل حدث لتطبيق Flask داخل الملف الرئيسي، وكيفية استخدامه لتسجيل الرسائل. ولكن المشكلة تكمن في القدرة على تسجيل الأحداث داخل وحدات Python أخرى مثل الـ Service التي تم ذكرها.

حل هذه المشكلة يتطلب إمكانية الوصول إلى مُسجل الحدث (Logger) من خلال الـ Service دون الحاجة إلى تمرير كائن التطبيق (app) نفسه. لحل هذا الأمر، يمكن استخدام وحدة logging في Python بشكل منظم لتوفير وحدة التسجيل التي يمكن الوصول إليها من أي مكان في التطبيق.

أحد الطرق لتحقيق هذا الهدف هو عن طريق إعداد وتكوين مُسجل الحدث (Logger) في ملف تهيئة خاص، ثم استيراد هذا المُسجل في جميع الوحدات التي تحتاج إليه. فيما يلي خطوات عملية لتحقيق ذلك:

  1. إنشاء ملف تهيئة للتسجيل:

قم بإنشاء ملف تهيئة للتسجيل (logging configuration file) يحدد تكوينات مُسجل الحدث بالشكل الذي ترغب به، على سبيل المثال:

python
# logging_config.py import logging.config LOGGING_CONFIG = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s' }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'level': 'DEBUG', 'formatter': 'standard' }, }, 'loggers': { '': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True } } } logging.config.dictConfig(LOGGING_CONFIG)
  1. استخدام ملف التهيئة في الملف الرئيسي:

في الملف الرئيسي لتطبيق Flask، استيراد وتكوين مُسجل الحدث باستخدام ملف التهيئة الذي أنشأناه:

python
# main.py from flask import Flask import logging.config from logging_config import LOGGING_CONFIG app = Flask(__name__) logging.config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger(__name__) # تكوين تطبيق Flask # ...
  1. استيراد مُسجل الحدث في الوحدات الفرعية:

الآن يمكنك استيراد مُسجل الحدث (logger) في أي ملف أو وحدة تابعة لتطبيقك دون الحاجة إلى تمرير كائن التطبيق (app)، وذلك باستخدام الخطوة السابقة:

python
# service.py import logging logger = logging.getLogger(__name__) class Service: def __init__(self, db_manager, query): self.db_manager = db_manager self.query = query def perform_task(self): # إجراء العملية المطلوبة logger.debug("Debug message from Service")

بهذا الشكل، يمكنك الآن استخدام مُسجل الحدث في أي مكان داخل تطبيقك دون الحاجة إلى تمرير كائن التطبيق (app) بشكل صريح، مما يجعل التطبيق أكثر نظافة وتنظيماً.

المزيد من المعلومات

بالتأكيد، دعني أكمل المقال لك:


  1. استخدام مسجل الحدث في الوحدات الفرعية:

الآن بمجرد تكوين مُسجل الحدث (logger) في ملف التهيئة واستيراده في الملف الرئيسي، يمكنك استخدامه بسهولة في الوحدات الفرعية الخاصة بتطبيقك، مثل الـ Service المذكورة في سؤالك.

على سبيل المثال، إذا كان لديك وظيفة في الـ Service تقوم بتنفيذ مهمة معينة، يمكنك ببساطة استخدام مسجل الحدث في هذه الوظيفة:

python
# service.py import logging logger = logging.getLogger(__name__) class Service: def __init__(self, db_manager, query): self.db_manager = db_manager self.query = query def perform_task(self): # إجراء العملية المطلوبة logger.debug("Debug message from Service")

هكذا، يُمكنك الآن تسجيل الأحداث داخل الـ Service بسهولة باستخدام مُسجل الحدث المُعرف في الملف الرئيسي دون الحاجة إلى تمرير كائن التطبيق (app).

  1. الاستفادة من ميزات تكوينات التسجيل:

يُعد استخدام ملف تهيئة للتسجيل واستيراده في ملف التطبيق الرئيسي منهجاً جيداً لتنظيم تسجيلات التطبيق. يُمكنك استفادة من ميزات تكوينات التسجيل لتخصيص السلوك والمخرجات حسب احتياجات تطبيقك. يمكنك على سبيل المثال تعيين مستوى تسجيل مختلف للمطور والإنتاج، وتحديد تنسيقات السجلات المختلفة للاستخدام في بيئات التطوير والإنتاج.

  1. ملاحظات إضافية:
  • يُمكنك استخدام مُسجلات الحدث المُعرفة في ملف التهيئة في جميع أنحاء تطبيقك بدون الحاجة إلى إعادة تكوينها مرة أخرى.
  • يُمكن توسيع هذا النهج لتضمين تكوينات تسجيل متقدمة مثل تسجيل الأخطاء (error logging)، تسجيل النقرات (click logging)، وغيرها من الميزات.

باستخدام هذه الإرشادات، يمكنك تحقيق إدارة تسجيلات متقدمة ونظيفة لتطبيق Flask الخاص بك دون تعقيد الرمز أو تكرار الكود.


هكذا، يكون المقال قد تم إكماله بإضافة المزيد من التفاصيل والنصائح المفيدة للقراء. إذا كان هناك أي استفسارات إضافية أو طلبات للمساعدة، فلا تتردد في طرحها.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر