گزارشهای 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 newDonedatasetActive 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 activeDoneifconfig upDonethread startDone
به پنجره ترمینال که دستور 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 تعریف شده است. فایل پیکربندی پلتفرم، مانند /src/nrf52840/openthread-core-nrf52840-config.h .
سطح گزارش را در زمان اجرا تغییر دهید
اگر کنترل سطح گزارش پویا فعال باشد، ممکن است سطوح گزارش در زمان اجرا تغییر کند.
- برنامه را با گزینه
-DOT_LOG_LEVEL_DYNAMIC=ONبسازید. به عنوان مثال،./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON - از Logging API در برنامه OpenThread خود استفاده کنید.