الاطّلاع على المصدر على 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.
.
- إنشاء مثال المحاكاة مع تفعيل جميع السجلات:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- بدء عقدة تحاكي الواقع:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- في نافذة طرفية جديدة، يمكنك إعداد إخراج في الوقت الفعلي لسجلات OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- في العقدة التي تمت محاكاتها، اعرض Thread:
dataset init new
Donedataset
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 Donedataset commit active
Doneifconfig up
Donethread 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.
- تعديل ملف الإعداد للنظام الأساسي كمثال وتغيير السجلّ
الإخراج إلى التطبيق. بالنسبة لمثال المحاكاة، يكون ذلك
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- أنشئ مثال المحاكاة باستخدام المستوى المطلوب من السجلات. لتفعيل كل الإشعارات
السجلّات:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- بدء عقدة تحاكي الواقع:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- من المفترض أن يظهر لك ناتج السجلّ في النافذة نفسها التي يظهر فيها واجهة سطر الأوامر 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:
- تعديل ملف الإعداد للنظام الأساسي وتغيير مخرجات السجلّ إلى
التطبيق. بالنسبة لـ nrf52840، يعد هذا
./src/nrf52840/openthread-core-nrf52840-config.h
في مستودع ot-nrf528xx:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- أنشئ مثال nrf52840 بالمستوى المطلوب من السجلات وغيرها
العلامات الخاصة بـ NCP. لإنشاء رابط مع تفعيل جميع السجلّات:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
وميض NCP وربطه بمضيف Linux، وبدء
wpantund
باسم بالتفصيل في مستودع wpantund.بعد تشغيل NCP، تحقَّق من
syslog
على الجهاز الذي يعمل بنظام التشغيل Linux:tail -F /var/log/syslog | grep "wpantund"
ومن المفترض أن تظهر لك سجلات OpenThread في الوقت الفعلي الخاصة بـ NCP. يمكنك ستظهر أيضًا في إخراج
wpantund
.
تغيير مستوى السجلّ في وقت التشغيل
يمكن تغيير مستويات السجلّ في وقت التشغيل في حال تفعيل التحكّم الديناميكي على مستوى السجلّ.
- يمكنك إنشاء التطبيق باستخدام الخيار "
-DOT_LOG_LEVEL_DYNAMIC=ON
". على سبيل المثال:./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- تغيير مستوى السجلّ استنادًا إلى عملية التنفيذ:
- بالنسبة إلى منظومة على الرقاقة (SoC)، استخدِم Logging API في تطبيق OpenThread.
- بالنسبة إلى NCP، استخدِم
wpanctl
في سطر الأوامر. يمكنك الاطّلاع علىwpan-properties.h
في مستودعwpantund
لجميع السمات المعروضة فيwpanctl
وSpinel API لمعرفة التعريفات على مستوى السجلّ.wpanctl set OpenThread:LogLevel 5