Log OpenThread dikontrol oleh banyak konstanta konfigurasi waktu kompilasi. Kecuali jika dinyatakan lain, konstanta ini ditentukan dalam file berikut:
openthread/src/core/config/logging.h
Metode output
OpenThread mendukung berbagai metode logging output, yang didefinisikan sebagai
konstanta konfigurasi waktu kompilasi OPENTHREAD_CONFIG_LOG_OUTPUT
. Opsi metode logging tercantum dalam file berikut:
openthread/src/core/config/logging.h
Konfigurasi output log default adalah
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
Metode output adalah contoh tempat Anda mungkin perlu mengupdate
konstanta konfigurasi tingkat platform, bukan yang intinya. Misalnya, untuk
mengubah metode output di aplikasi contoh simulasi, edit
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
, bukan
openthread/src/core/config/logging.h
.
Level log
Log dapat menghasilkan berbagai level informasi, yang ditentukan sebagai konstanta konfigurasi waktu kompilasi dari OPENTHREAD_CONFIG_LOG_LEVEL
. Opsi level tercantum dalam file berikut:
openthread/include/openthread/platform/logging.h
Daftar level log juga tersedia di referensi Platform Logging Macros API.
Level log default adalah OT_LOG_LEVEL_CRIT
yang hanya menghasilkan log
yang paling penting. Ubah level untuk melihat log lainnya sesuai keinginan. Untuk melihat semua
log OpenThread, gunakan OT_LOG_LEVEL_DEBG
.
Mencatat wilayah
Region log menentukan area kode OpenThread yang diaktifkan untuk logging. Enumerasi wilayah ditentukan dalam file berikut:
openthread/include/openthread/platform/logging.h
Daftar region log juga tersedia di referensi API Platform Logging Enumerations.
Region log biasanya digunakan sebagai parameter dalam fungsi log. Semua region diaktifkan secara default.
Fungsi logging default
Fungsi default untuk logging dalam OpenThread adalah otPlatLog
, yang didefinisikan sebagai konstanta konfigurasi waktu kompilasi dari OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Lihat referensi Platform Logging API untuk mengetahui informasi lebih lanjut tentang fungsi ini.
Untuk menggunakan fungsi ini langsung di aplikasi contoh OpenThread, gunakan opsi pembuatan OT_REFERENCE_DEVICE
. Misalnya, untuk menggunakannya dalam aplikasi CLI untuk contoh CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
Atau, update file openthread/etc/cmake/options.cmake
untuk mengaktifkannya secara default saat mem-build.
Cara mengaktifkan log
Sebelum mengaktifkan log, pastikan lingkungan Anda dikonfigurasi untuk mem-build OpenThread. Lihat Mem-build OpenThread untuk informasi selengkapnya.
Aktifkan semua log
Untuk mengaktifkan semua level log dan region dengan cepat, gunakan opsi cmake OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Tombol ini menetapkan level log ke OT_LOG_LEVEL_DEBG
dan mengaktifkan semua tanda
region.
Mengaktifkan level log tertentu
Untuk mengaktifkan tingkat log tertentu, edit openthread/src/core/config/logging.h
dan perbarui OPENTHREAD_CONFIG_LOG_LEVEL
ke tingkat yang diinginkan, lalu build OpenThread. Misalnya, untuk mengaktifkan log hingga OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Lihat log di syslog
Log dikirim ke syslog
secara default. Di Linux, ini adalah /var/log/syslog.
- Buat contoh simulasi dengan semua log yang diaktifkan:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Mulai simulasi node:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Di jendela terminal baru, siapkan output real-time log OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Pada node yang disimulasikan, tampilkan 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
Beralih kembali ke jendela terminal yang menjalankan perintah tail
. Log akan ditampilkan secara real time untuk
node yang disimulasikan. Perhatikan tag log dalam output: [INFO]
, [DEBG]
, [NOTE]
. Ini semua sesuai
dengan tingkat log. Misalnya, jika Anda mengubah level log menjadi OT_LOG_LEVEL_INFO
, log DEBG
akan hilang dari output.
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)
Melihat log di aplikasi CLI
Log dapat dilihat langsung di aplikasi contoh OpenThread CLI.
- Edit file konfigurasi untuk platform contoh dan ubah output
log ke aplikasi. Untuk contoh simulasi, ini adalah
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Buat contoh simulasi dengan level log yang diinginkan. Untuk mengaktifkan semua
log:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Mulai simulasi node:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Anda akan melihat output log di jendela yang sama dengan OpenThread CLI saat perintah diproses.
Jika Anda telah menambahkan logging kustom dan mengaktifkan semua log, buffering baris CLI atau buffering transmisi UART mungkin tidak cukup besar untuk menangani log kustom tambahan. Jika beberapa log tidak
muncul saat seharusnya muncul, coba tingkatkan ukuran buffer baris
CLI, yang ditetapkan sebagai OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
di
/openthread/src/cli/cli_config.h
, atau tingkatkan ukuran buffer transmisi UART, yang ditetapkan sebagai
OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
dalam file konfigurasi platform, seperti
/src/nrf52840/openthread-core-nrf52840-config.h
.
Melihat log untuk NCP
Log untuk NCP dapat dikirim melalui wpantund
ke syslog
sebuah host. Untuk
host Linux, ini adalah /var/log/syslog.
Gunakan nilai OPENTHREAD_CONFIG_LOG_OUTPUT
dari OPENTHREAD_CONFIG_LOG_OUTPUT_APP
untuk mengaktifkan logging NCP. Anda dapat mengubahnya di
file konfigurasi platform.
Misalnya, untuk mengaktifkan setelan ini bagi nrf52840 yang terhubung ke host Linux:
- Edit file konfigurasi untuk platform dan ubah output log menjadi
aplikasi. Untuk nrf52840, ini adalah
./src/nrf52840/openthread-core-nrf52840-config.h
di repositori ot-nrf528xx:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Buat contoh nrf52840 dengan level log yang diinginkan dan flag khusus NCP lainnya. Untuk membuat joiner dengan semua log diaktifkan:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
Flash NCP, hubungkan ke host Linux, dan mulai
wpantund
seperti yang dijelaskan dalam repositori wpantund.Setelah NCP berjalan, periksa
syslog
pada mesin Linux:tail -F /var/log/syslog | grep "wpantund"
Anda akan melihat log OpenThread ditampilkan secara real time untuk NCP. Anda juga dapat melihatnya di output
wpantund
.
Mengubah level log saat runtime
Level log dapat diubah saat runtime jika kontrol level log dinamis diaktifkan.
- Build aplikasi dengan opsi
-DOT_LOG_LEVEL_DYNAMIC=ON
. Misalnya,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Ubah level log bergantung pada penerapan Anda:
- Untuk system-on-chip (SoC), gunakan Logging API dalam aplikasi OpenThread Anda.
- Untuk NCP, gunakan
wpanctl
pada command line. Lihatwpan-properties.h
di repositoriwpantund
untuk semua properti yang diekspos kewpanctl
dan Spinel API untuk mengetahui definisi level lognya.wpanctl set OpenThread:LogLevel 5