البرمجة

تحكم في مستوى تسجيل Elasticsearch

إعداد مستوى تسجيل الأحداث لمكتبة Elasticsearch بطريقة مختلفة عن مستوى تسجيل الأحداث الخاص بي هو تحدٍ يواجه العديد من مطوري Python الذين يتعاملون مع هذه المكتبة. لفهم السيناريو بوضوح، دعني أقدم لك رؤية شاملة عن الوضع. تخيل أن لديك وحدة تدعى “lookup.py” تعتمد على مكتبة Elasticsearch للبحث عن البيانات. في هذه الوحدة، تقوم بتهيئة مستوى التسجيل للتحكم في مستوى السجلات التي يتم توليدها أثناء التنفيذ.

في هذا السيناريو، تستخدم مكتبة logging لإنشاء وحدة تسجيل مخصصة لـ “lookup.py” باستخدام logging.getLogger(__name__). بالإضافة إلى ذلك، تهيئ مستوى التسجيل العام باستخدام logging.root.setLevel() في الملف الرئيسي الخاص بك. ومع ذلك، تواجه تحديًا عندما ترغب في تقليل مستوى تسجيل الأحداث داخل كائنات Elasticsearch دون التأثير على مستوى التسجيل في وحدة “lookup.py” نفسها.

لحل هذه المشكلة، يمكنك استخدام تقنية تعيين مستوى تسجيل الأحداث (Logging Level) داخل كائن Elasticsearch دون التأثير على تسجيل الأحداث الخاص بك. يتضمن هذا الأمر استبدال مستوى تسجيل الأحداث الافتراضي لكائن Elasticsearch بمستوى تسجيل أقل قوة. فيما يلي كيفية تحقيق ذلك:

  1. قم بالوصول إلى كائن Elasticsearch بعد إنشائه داخل وحدة “lookup.py”.

  2. قم بتعيين مستوى تسجيل الأحداث لكائن Elasticsearch إلى مستوى أقل، مثل مستوى “WARNING” أو “ERROR”.

الآن، دعني أوضح كيفية تنفيذ ذلك بالتفصيل داخل الكود:

python
# في وحدة lookup.py import logging import elasticsearch logger = logging.getLogger(__name__) def get_docs(): logger.debug("search elastic") es = elasticsearch.Elasticsearch('http://my-es-server:9200/') # تعيين مستوى تسجيل الأحداث لكائن Elasticsearch إلى مستوى أقل es_logger = logging.getLogger('elasticsearch') es_logger.setLevel(logging.WARNING) # يمكنك استبدال logging.WARNING بالمستوى الذي تفضله res = es.search(index='myindex', body='myquery') logger.debug("elastic returns %s hits" % res['hits']['total']) # البقية من الكود

مع هذا التحديث في الكود، يتم تعيين مستوى تسجيل الأحداث لكائن Elasticsearch إلى مستوى أقل، مما يسمح لك بتقليل كمية الرسائل التي تظهر من داخل كائن Elasticsearch دون التأثير على تسجيل الأحداث الخاص بوحدة “lookup.py”. يمكنك ضبط المستوى حسب احتياجات تطبيقك، سواء كان ذلك “WARNING” أو أي مستوى آخر يتناسب مع متطلباتك المحددة.

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

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

عندما تقوم بتشغيل تطبيقك الذي يتضمن وحدة “lookup.py”، يتم تحميل وتنفيذ الكود الموجود في هذه الوحدة. في السطور الأولى من الوحدة، تقوم بتهيئة مستوى التسجيل باستخدام logging.getLogger(__name__)، مما ينشئ مستوى تسجيل خاص بالوحدة يمكن التحكم فيه مستقلين عن المستوى العام للتسجيل.

ثم، عند استخدام مكتبة Elasticsearch داخل الوحدة باستخدام elasticsearch.Elasticsearch()، يتم إنشاء كائن Elasticsearch. هذا الكائن يولد أيضًا رسائل تسجيل الأحداث، والتي تمتزج مع رسائل التسجيل الخاصة بالوحدة.

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

لحل هذه المشكلة، يتم استخدام logging.getLogger('elasticsearch') للوصول إلى مستوى تسجيل الأحداث الخاص بكائنات Elasticsearch. بعد الوصول إليه، يتم تعيين مستوى تسجيل الأحداث لهذه الكائنات باستخدام es_logger.setLevel()، مما يسمح بتحديد مستوى أقل للتسجيل لهذه الكائنات.

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

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

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

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

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