گزارشهای 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 Macros Logging Platform موجود است.
سطح گزارش پیشفرض OT_LOG_LEVEL_CRIT
است که فقط بحرانیترین گزارشها را خروجی میدهد. برای مشاهده سیاهههای مربوط به دلخواه سطح را تغییر دهید. برای دیدن همه گزارشهای OpenThread، از OT_LOG_LEVEL_DEBG
استفاده کنید.
مناطق ورود به سیستم
مناطق log تعیین می کنند که چه مناطقی از کد OpenThread برای ورود به سیستم فعال هستند. شماره منطقه در فایل زیر تعریف شده است:
openthread/include/openthread/platform/logging.h
فهرست مناطق گزارش نیز در مرجع API شمارشهای ورود به سیستم در دسترس است.
مناطق گزارش معمولاً به عنوان پارامتر در توابع گزارش استفاده می شوند. همه مناطق به طور پیش فرض فعال هستند.
عملکرد پیشفرض ورود به سیستم
تابع پیشفرض برای ورود به سیستم OpenThread otPlatLog
است که به عنوان ثابت پیکربندی زمان کامپایل OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
تعریف میشود.
برای اطلاعات بیشتر در مورد این عملکرد به مرجع API Logging Platform مراجعه کنید.
برای استفاده مستقیم از این تابع در برنامههای نمونه OpenThread، از گزینه cmake OT_REFERENCE_DEVICE
استفاده کنید. به عنوان مثال، برای استفاده از آن در برنامه CLI برای مثال CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
همچنین، فایل openthread/etc/cmake/options.cmake
را بهروزرسانی کنید تا در هنگام ساخت بهطور پیشفرض فعال شود.
نحوه فعال کردن لاگ ها
قبل از فعال کردن گزارشها، مطمئن شوید که محیط شما برای ساخت OpenThread پیکربندی شده است. برای اطلاعات بیشتر به Build 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
گزارش ها به صورت پیش فرض به syslog
ارسال می شوند. در لینوکس، این /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)
گزارشها را در برنامه CLI مشاهده کنید
گزارشها ممکن است مستقیماً در برنامه نمونه 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 ببینید.
اگر گزارشگیری سفارشی را اضافه کردهاید و همه گزارشها را فعال کردهاید، بافر خط CLI یا بافر انتقال UART ممکن است به اندازه کافی بزرگ نباشد که بتواند گزارشهای سفارشی اضافی را مدیریت کند. اگر برخی از گزارشها در زمانی که باید ظاهر نمیشوند، سعی کنید اندازه بافر خط CLI را افزایش دهید، که بهعنوان OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
در /openthread/src/cli/cli_config.h
تعریف شده است یا اندازه بافر انتقال UART را افزایش دهید، که بهعنوان OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
در /openthread/src/cli/cli_config.h تعریف شده است. فایل پیکربندی، مانند /src/nrf52840/openthread-core-nrf52840-config.h
.
مشاهده گزارش های یک NCP
گزارشهای یک NCP ممکن است از طریق wpantund
به syslog
یک میزبان ارسال شوند. برای یک هاست لینوکس، این /var/log/syslog.
از یک مقدار OPENTHREAD_CONFIG_LOG_OUTPUT
OPENTHREAD_CONFIG_LOG_OUTPUT_APP
برای فعال کردن گزارش NCP استفاده کنید. این مورد را در فایل پیکربندی پلتفرم تغییر دهید.
به عنوان مثال، برای فعال کردن این مورد برای یک nrf52840 متصل به یک میزبان لینوکس:
- فایل پیکربندی پلتفرم را ویرایش کنید و خروجی گزارش را به برنامه تغییر دهید. برای 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 را فلش کنید، آن را به هاست لینوکس متصل کنید و
wpantund
همانطور که در مخزن wpantund توضیح داده شده است راه اندازی کنید.هنگامی که NCP اجرا می شود،
syslog
را در دستگاه لینوکس بررسی کنید: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