سجلات OpenThread

عرض المصدر على جيثب

يتم التحكم في سجلات 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

قائمة مستويات السجل وتتوفر أيضا في منهاج تسجيل وحدات الماكرو إشارة API.

مستوى السجل الافتراضي هو OT_LOG_LEVEL_CRIT الذي النواتج فقط السجلات الأكثر أهمية. قم بتغيير المستوى لرؤية المزيد من السجلات حسب الرغبة. لمشاهدة كافة السجلات OpenThread، استخدم OT_LOG_LEVEL_DEBG .

مناطق السجل

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

openthread/include/openthread/platform/logging.h

قائمة المناطق السجل وتتوفر أيضا في منهاج تسجيل التعدادات إشارة API.

تُستخدم مناطق السجل بشكل شائع كمعلمات في وظائف السجل. يتم تمكين جميع المناطق افتراضيًا.

وظيفة التسجيل الافتراضية

وظيفة الافتراضي للتسجيل في OpenThread هي otPlatLog ، الذي يعرف بأنه وقت الترجمة التكوين ثابت OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

اطلع على تسجيل منصة إشارة API لمزيد من المعلومات حول هذه الوظيفة.

لاستخدام هذه الوظيفة مباشرة في المثال التطبيقات 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 بشكل افتراضي. على لينكس، وهذا هو /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. في إطار المحطة الطرفية الجديدة، وإنشاء الانتاج في الوقت الحقيقي من سجلات الأراضي المحتلة:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. في العقدة التي تمت محاكاتها ، احضر مؤشر الترابط:
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)

اعرض السجلات في تطبيق CLI

يمكن عرض السجلات مباشرة في مثال تطبيق 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 حيث تتم معالجة الأوامر.

إذا أضفت تسجيلاً مخصصًا ومكّنت جميع السجلات ، فقد لا يكون المخزن المؤقت لخط CLI أو المخزن المؤقت للإرسال UART كبيرًا بما يكفي للتعامل مع السجلات المخصصة الإضافية. وإذا كان بعض السجلات لا تظهر في الوقت الذي يجب، حاول زيادة حجم المخزن المؤقت خط CLI، الذي يعرف بأنه 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

يمكن إرسال سجلات لحزب المؤتمر الوطني من خلال wpantund إلى syslog من مجموعة. لمجموعة لينكس، وهذا هو /var/log/syslog.

استخدام OPENTHREAD_CONFIG_LOG_OUTPUT قيمة OPENTHREAD_CONFIG_LOG_OUTPUT_APP تمكين تسجيل حزب المؤتمر الوطني. قم بتغيير هذا في ملف تكوين النظام الأساسي.

على سبيل المثال ، لتمكين هذا لـ 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. فلاش حزب المؤتمر الوطني، لأنه ربط المضيف لينكس، والبدء في wpantund على النحو المفصل في wpantund مستودع.

  4. بمجرد تشغيل حزب المؤتمر الوطني، والتحقق من syslog على الجهاز لينكس:

    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. ل نظام على رقاقة (شركة نفط الجنوب) ، استخدم API تسجيل في تطبيق OpenThread الخاص بك.
    2. لحزب المؤتمر الوطني، واستخدام wpanctl على سطر الأوامر. انظر wpan-properties.h في wpantund مستودع لكافة الخصائص تتعرض ل wpanctl و API الإسبنيل للحصول على تعريفات مستوى السجل الخاص به.
      wpanctl set OpenThread:LogLevel 5