บันทึกของ 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 ของ Logging Enumerations
โดยทั่วไปแล้ว เขตการบันทึกจะใช้เป็นพารามิเตอร์ในฟังก์ชันบันทึก ภูมิภาคทั้งหมด เปิดใช้งานโดยค่าเริ่มต้น
ฟังก์ชันการบันทึกเริ่มต้น
ฟังก์ชันเริ่มต้นสำหรับการบันทึกภายใน OpenThread คือ otPlatLog
ค่าคงที่การกำหนดค่าเวลาคอมไพล์
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
ดู Platform Logging API สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันนี้
หากต้องการใช้ฟังก์ชันนี้ในแอปตัวอย่าง OpenThread โดยตรง ให้ใช้ OT_REFERENCE_DEVICE
cmake ตัวอย่างเช่น หากต้องการใช้งานภายในแอป CLI สำหรับตัวอย่าง CC2538 ให้ทำดังนี้
./script/build -DOT_REFERENCE_DEVICE=ON
หรือจะอัปเดตไฟล์ openthread/etc/cmake/options.cmake
เพื่อเปิดใช้โดยค่าเริ่มต้นเมื่อสร้าง
วิธีเปิดใช้บันทึก
ก่อนเปิดใช้บันทึก โปรดตรวจสอบว่าได้กำหนดค่าสภาพแวดล้อมสำหรับการสร้าง OpenThread. โปรดดูข้อมูลเพิ่มเติมที่สร้าง OpenThread
เปิดใช้บันทึกทั้งหมด
หากต้องการเปิดใช้ระดับการบันทึกและภูมิภาคทั้งหมดอย่างรวดเร็ว ให้ใช้ตัวเลือก cmake ของ OT_FULL_LOGS
ดังนี้
./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.
ใน Linux
- สร้างตัวอย่างการจำลองที่เปิดใช้บันทึกทั้งหมด
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
ในไฟล์การกำหนดค่าของแพลตฟอร์ม เช่น
/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) ใช้ Lcking API ภายใน แอปพลิเคชัน OpenThread
- สำหรับ NCP ให้ใช้
wpanctl
ในบรรทัดคำสั่ง โปรดดูwpan-properties.h
ในที่เก็บwpantund
สำหรับพร็อพเพอร์ตี้ทั้งหมดที่แสดงwpanctl
และ Spinel API สำหรับคำจำกัดความระดับบันทึกwpanctl set OpenThread:LogLevel 5