البرمجة

Python Custom Log Formatter

بالتأكيد، يمكنك تحقيق ذلك بواسطة إنشاء مُنسّق سجلات خاص بك يستخدم Formatter لعرض جميع المعطيات الموجودة في extra دون الحاجة إلى معرفة سابقة بأسماء المتغيرات داخلها.

في Python، يُمكنك القيام بذلك من خلال تعريف فئة مُنسق السجلات الخاص بك. يُمكنك استخدام الطريقة format() في الفئة Formatter للوصول إلى معطيات extra وعرضها بالشكل الذي تريده.

فيما يلي مثال على كيفية تنفيذ ذلك:

python
import logging class CustomFormatter(logging.Formatter): def format(self, record): # نسخ جميع المعطيات في extra إلى قائمة مفردات items = [] for key, value in record.__dict__.items(): if key != 'extra': items.append(f"{key}={value}") # إضافة المعطيات من extra إلى القائمة for key, value in record.__dict__['extra'].items(): items.append(f"{key}={value}") # تنسيق السجل كما تريده log_msg = ', '.join(items) return f"{record.created}, {record.levelname}, {record.msg}, {log_msg}" # تهيئة مسجل السجلات logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) # تهيئة المعالج handler = logging.StreamHandler() handler.setLevel(logging.INFO) # تهيئة المنسق formatter = CustomFormatter() handler.setFormatter(formatter) # إضافة المعالج إلى المسجل logger.addHandler(handler) # استخدام المسجل logger.info('Status', extra={'foo': 'data'}) logger.info('Status', extra={'bar': 'data'}) logger.info('Status', extra={'foo': 'data', 'bar': 'data'})

هذا الكود ينشئ فئة مُنسق مخصصة تمتد من Formatter، والتي تستخدم داخلها دالة format() لإنشاء سلسلة نصية مُنسقة لسجل السجلات. تتيح هذه الفئة الوصول إلى جميع المعطيات في extra وتضمينها في سلسلة السجل بدون الحاجة إلى معرفة مسبقة بأسماء المتغيرات.

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

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

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

بمجرد تشغيل الشيفرة المُعطاة، ستلاحظ أن السجلات التي يُنشئها المسجل ستظهر بالشكل المطلوب على النحو التالي:

kotlin
1633722666.9770758, INFO, Status, foo=data 1633722666.9772165, INFO, Status, bar=data 1633722666.9773204, INFO, Status, foo=data, bar=data

حيث يتم عرض تاريخ ووقت السجل، ومستوى السجل، ورسالة السجل، تليها المعطيات الموجودة في extra بالشكل المطلوب.

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

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

باستخدام هذا النهج، يمكنك الآن إضافة سجلات مُنسّقة وقراءتها بسهولة دون الحاجة إلى معرفة سابقة بالبيانات التي يمكن أن تتواجد في extra.

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

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

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

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