יומני 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 של Platform Logs Macros.
רמת ברירת המחדל של היומן היא OT_LOG_LEVEL_CRIT
שמפיקה רק את היומנים הקריטיים ביותר. משנים את הרמה כדי לראות יותר יומנים לפי הצורך. כדי לראות את כל יומני OpenThread, צריך להשתמש ב-OT_LOG_LEVEL_DEBG
.
רישום אזורים
האזורים ביומן קובעים אילו אזורים בקוד פתוח של OpenThread מופעלים לתיעוד. מספור האזורים בקובץ הבא מוגדר:
openthread/include/openthread/platform/logging.h
רשימת האזורים ביומן זמינה גם בחומר העזר בנושא Enumerations API לרישום ביומן בפלטפורמה.
אזורי יומן משמשים בדרך כלל כפרמטרים בפונקציות ביומן. כל האזורים מופעלים כברירת מחדל.
פונקציית רישום ברירת המחדל
פונקציית ברירת המחדל לרישום ביומן ב-OpenThread היא otPlatLog
, שמוגדרת בתור קבוע התצורה של זמן ההידור, OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
מידע נוסף על הפונקציה הזו זמין במאמר API Logging בפלטפורמה.
כדי להשתמש בפונקציה הזו ישירות באפליקציות לדוגמה של OpenThread, צריך להשתמש באפשרות הייצור של OT_REFERENCE_DEVICE
. לדוגמה, כדי להשתמש ב-CLI באפליקציית CC2538 לדוגמה:
./script/build -DOT_REFERENCE_DEVICE=ON
לחלופין, אפשר לעדכן את הקובץ openthread/etc/cmake/options.cmake
כדי להפעיל אותו כברירת מחדל בזמן יצירת הקובץ.
איך מפעילים יומנים?
לפני שמפעילים יומנים, חשוב לוודא שהסביבה מוגדרת לבניית OpenThread. מידע נוסף זמין במאמר Build OpenThread.
הפעלת כל היומנים
כדי להפעיל במהירות את כל הרמות והאזורים ביומן, יש להשתמש באפשרות לוח האם 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
כברירת מחדל. ב-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"
- בצומת המדמות, הצג את השרשור:
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
- הפלט של היומן אמור להופיע בחלון זהה לזה של ה-CLI של OpenThread בזמן העיבוד של הפקודות.
אם הוספתם יומן רישום בהתאמה אישית והפעלתם את כל היומנים, יכול להיות שמאגר הנתונים של מאגר 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"
ב-NCP אמורים להופיע יומני OpenThread בזמן אמת. יכול להיות שיופיעו גם בפלט של
wpantund
.
שינוי רמת היומן בזמן הריצה
ניתן לשנות את רמות היומן בזמן הריצה אם מופעל שליטה ברמת היומן הדינמי.
- אפשר לפתח את האפליקציה עם האפשרות
-DOT_LOG_LEVEL_DYNAMIC=ON
. לדוגמה,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- משנים את רמת היומן בהתאם להטמעה:
- ב-System-on-Sop (SoC), השתמשו ב-Logging API באפליקציית OpenThread.
- ל-NCP, יש להשתמש בשורה
wpanctl
בשורת הפקודה. במאגר שלwpantund
תוכלו לראותwpan-properties.h
את כל הנכסים שנחשפו ל-wpanctl
, ואת Spinel API להגדרות של רמת הרישום ביומן.wpanctl set OpenThread:LogLevel 5