سجلات OpenThread

الاطّلاع على المصدر على GitHub

يتم التحكم في سجلات OpenThread من خلال العديد من ثوابت تكوين وقت التجميع. يتم تعريف هذه الثوابت في الملف التالي، ما لم يُذكر خلاف ذلك:

openthread/src/core/config/logging.h

طرق الإخراج

يدعم OpenThread طرقًا مختلفة لتسجيل الإخراج، وتعرف بأنها ثابت تهيئة وقت التجميع لـ OPENTHREAD_CONFIG_LOG_OUTPUT. تشير رسالة الأشكال البيانية يتم سرد خيارات طريقة التسجيل في الملف التالي:

openthread/src/core/config/logging.h

تهيئة مخرجات السجل الافتراضية هي OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED

طريقة الإخراج هي مثال على المكان الذي قد تحتاج فيه إلى تحديث ثابت التكوين على مستوى النظام الأساسي بدلاً من النظام الأساسي. على سبيل المثال، بهدف تغيير طريقة الإخراج في تطبيق المحاكاة، تعديل openthread/examples/platforms/simulation/openthread-core-simulation-config.h بدلاً من openthread/src/core/config/logging.h

مستويات السجلّ

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

openthread/include/openthread/platform/logging.h

تتوفر قائمة مستويات السجلّ أيضًا في صفحة النظام الأساسي مرجع واجهة برمجة التطبيقات لوحدات ماكرو التسجيل

مستوى السجلّ التلقائي هو OT_LOG_LEVEL_CRIT وهو الذي يُخرج أكبر عدد فقط من البيانات والسجلات الهامة. يمكنك تغيير المستوى للاطّلاع على المزيد من السجلّات على النحو المطلوب. الاطّلاع على الكل استخدِم OT_LOG_LEVEL_DEBG في سجلّات OpenThread.

تسجيل المناطق

تحدد مناطق السجل مناطق رمز OpenThread التي تم تفعيلها لها التسجيل. يتم تعريف تعداد المنطقة في الملف التالي:

openthread/include/openthread/platform/logging.h

تتوفّر قائمة مناطق السجلّ أيضًا في صفحة النظام الأساسي مرجع واجهة برمجة التطبيقات Logging Enumerations

تُستخدم مناطق السجل بشكل شائع كمعلمات في دوال السجل. جميع المناطق مُفعَّلة تلقائيًا.

وظيفة التسجيل التلقائية

الدالة التلقائية للتسجيل ضمن OpenThread هي الدالة otPlatLog، وتُعرف بأنها ثابت تهيئة وقت التجميع OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION

الاطّلاع على واجهة برمجة تطبيقات Platform Logging مرجع للحصول على مزيد من المعلومات حول هذه الدالة.

لاستخدام هذه الدالة مباشرةً في أمثلة التطبيقات على OpenThread، استخدِم السمة OT_REFERENCE_DEVICE باستخدام علامة التبويب cmake. على سبيل المثال، لاستخدامه داخل تطبيق CLI في المثال CC2538:

./script/build -DOT_REFERENCE_DEVICE=ON

ويمكنك بدلاً من ذلك تعديل ملف openthread/etc/cmake/options.cmake لتفعيله تلقائيًا عند إنشاء المستند.

كيفية تفعيل السجلّات

قبل تفعيل السجلات، تأكَّد من ضبط بيئتك لإنشاء OpenThread. راجِع إنشاء OpenThread للحصول على مزيد من المعلومات.

تفعيل جميع السجلّات

لتفعيل جميع مستويات السجلّ ومناطقه بسرعة، استخدِم خيار OT_FULL_LOGS cmake:

./script/build -DOT_FULL_LOGS=ON

يضبط مفتاح التبديل هذا مستوى السجلّ على OT_LOG_LEVEL_DEBG ويتم تفعيل جميع المناطق. الأعلام.

تفعيل مستوى معيّن من السجلات

لتفعيل مستوى معيّن من السجلات، عدِّل openthread/src/core/config/logging.h ثم عدِّل. OPENTHREAD_CONFIG_LOG_LEVEL إلى المستوى المطلوب، ثم أنشئ OpenThread. بالنسبة على سبيل المثال، لتفعيل السجلات حتى OT_LOG_LEVEL_INFO:

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

عرض السجلات في سجل النظام

يتم إرسال السجلّات إلى syslog تلقائيًا. على نظام التشغيل Linux، هذا هو /var/log/syslog..

  1. إنشاء مثال المحاكاة مع تفعيل جميع السجلات:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. بدء عقدة تحاكي الواقع:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. في نافذة طرفية جديدة، يمكنك إعداد إخراج في الوقت الفعلي لسجلات OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. في العقدة التي تمت محاكاتها، اعرض Thread:
dataset init new
Done
dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: d63e8e3e495ebbc3
Mesh Local Prefix: fd3d:b50b:f96d:722d/64
Network Key: dfd34f0f05cad978ec4e32b0413038ff
Network Name: OpenThread-8f28
PAN ID: 0x8f28
PSKc: c23a76e98f1a6483639b1ac1271e2e27
Security Policy: 0, onrcb
Done
dataset commit active
Done
ifconfig up
Done
thread start
Done

عليك التبديل مرة أخرى إلى نافذة الوحدة الطرفية من خلال تنفيذ الأمر tail. يجب عرض السجلات في الوقت الفعلي العقدة التي تمت محاكاتها. دوِّن علامات السجلّ في الإخراج: [INFO] و[DEBG] و[NOTE]. تتوافق جميعها إلى مستويات السجل. على سبيل المثال، إذا غيّرت مستوى السجلّ إلى OT_LOG_LEVEL_INFO، تختفي سجلات DEBG من الإخراج.

ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: SrcAddrMatch - Cleared all entries
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x7f133b) [Ip6+ Ip6- LLAddr MLAddr Rloc+ KeySeqCntr NetData Ip6Mult+ Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset panid
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset commit active
ot-cli-ftd[30055]: [1] [INFO]-MESH-CP-: Active dataset set
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio sleeping
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: RadioPanId: 0x8f28
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x007f0100) [KeySeqCntr Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: ifconfig up
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio receiving on channel 11
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: thread start
ot-cli-ftd[30055]: [1] [NOTE]-MLE-----: Role Disabled -> Detached
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Attempt to become router
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x7d4, maccntr:0x7d0, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [DEBG]-MLE-----: Store Network Information
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Send Link Request (ff02:0:0:0:0:0:0:2)

عرض السجلّات في تطبيق واجهة سطر الأوامر

يمكن عرض السجلات مباشرةً في تطبيق المثال OpenThread CLI.

  1. تعديل ملف الإعداد للنظام الأساسي كمثال وتغيير السجلّ الإخراج إلى التطبيق. بالنسبة لمثال المحاكاة، يكون ذلك openthread/examples/platforms/simulation/openthread-core-simulation-config.h:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. أنشئ مثال المحاكاة باستخدام المستوى المطلوب من السجلات. لتفعيل كل الإشعارات السجلّات:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. بدء عقدة تحاكي الواقع:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. من المفترض أن يظهر لك ناتج السجلّ في النافذة نفسها التي يظهر فيها واجهة سطر الأوامر OpenThread تتم معالجة الأوامر.

إذا أضفت تسجيل دخول مخصص وقمت بتمكين جميع السجلات أو المخزن المؤقت لسطر واجهة سطر الأوامر (CLI) أو نقل UART قد لا يكون المخزن المؤقت كبيرًا بما يكفي لمعالجة السجلات المخصصة الإضافية. إذا لم تكن بعض السجلات عند ظهورها، جرّب زيادة حجم سطر واجهة سطر الأوامر مخزن مؤقت، تم تحديده على أنه OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH بوصة /openthread/src/cli/cli_config.h أو زيادة حجم المخزن المؤقت لإرسال UART، علمًا بأنها OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE في ملف إعداد النظام الأساسي، مثل /src/nrf52840/openthread-core-nrf52840-config.h

عرض سجلات NCP

قد يتم إرسال سجلّات NCP من خلال wpantund إلى syslog الخاص بمضيف. بالنسبة إلى مضيف Linux، هذا هو /var/log/syslog.

استخدام قيمة OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP لتفعيل تسجيل NCP. تغيير هذا في ملف إعداد المنصة.

على سبيل المثال، لتمكين هذا لـ nrf52840 متصل بمضيف Linux:

  1. تعديل ملف الإعداد للنظام الأساسي وتغيير مخرجات السجلّ إلى التطبيق. بالنسبة لـ nrf52840، يعد هذا ./src/nrf52840/openthread-core-nrf52840-config.h في مستودع ot-nrf528xx:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. أنشئ مثال nrf52840 بالمستوى المطلوب من السجلات وغيرها العلامات الخاصة بـ NCP. لإنشاء رابط مع تفعيل جميع السجلّات:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. وميض NCP وربطه بمضيف Linux، وبدء wpantund باسم بالتفصيل في مستودع wpantund.

  4. بعد تشغيل NCP، تحقَّق من syslog على الجهاز الذي يعمل بنظام التشغيل Linux:

    tail -F /var/log/syslog | grep "wpantund"
    

  5. ومن المفترض أن تظهر لك سجلات OpenThread في الوقت الفعلي الخاصة بـ NCP. يمكنك ستظهر أيضًا في إخراج wpantund.

تغيير مستوى السجلّ في وقت التشغيل

يمكن تغيير مستويات السجلّ في وقت التشغيل في حال تفعيل التحكّم الديناميكي على مستوى السجلّ.

  1. يمكنك إنشاء التطبيق باستخدام الخيار "-DOT_LOG_LEVEL_DYNAMIC=ON". على سبيل المثال:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
  2. تغيير مستوى السجلّ استنادًا إلى عملية التنفيذ:
    1. بالنسبة إلى منظومة على الرقاقة (SoC)، استخدِم Logging API في تطبيق OpenThread.
    2. بالنسبة إلى NCP، استخدِم wpanctl في سطر الأوامر. يمكنك الاطّلاع على wpan-properties.h في مستودع wpantund لجميع السمات المعروضة في wpanctl وSpinel API لمعرفة التعريفات على مستوى السجلّ.
      wpanctl set OpenThread:LogLevel 5