Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

OpenThread Logs

Log OpenThread dikontrol oleh banyak konstanta konfigurasi waktu kompilasi. Kecuali dinyatakan lain, konstanta ini ditentukan dalam file berikut:

/src/core/config/logging.h

Metode keluaran

OpenThread mendukung metode pencatatan keluaran yang berbeda, yang didefinisikan sebagai konstanta konfigurasi waktu kompilasi dari OPENTHREAD_CONFIG_LOG_OUTPUT . Opsi metode pencatatan terdaftar di file berikut ini:

/src/core/config/logging.h

Konfigurasi keluaran log default adalah OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED .

Metode keluaran adalah contoh di mana Anda mungkin perlu memperbarui konstanta konfigurasi tingkat platform, bukan yang inti. Misalnya, untuk mengubah metode keluaran dalam aplikasi contoh sim, edit /examples/platforms/sim/openthread-core-sim-config.h alih-alih /src/core/config/logging.h .

Tingkat log

Log dapat mengeluarkan berbagai tingkat informasi, yang didefinisikan sebagai konstanta konfigurasi waktu kompilasi OPENTHREAD_CONFIG_LOG_LEVEL . Opsi level terdaftar di file berikut ini:

/include/openthread/platform/logging.h

Daftar level log juga tersedia di referensi Platform Logging Macros API.

Tingkat log default adalah OT_LOG_LEVEL_CRIT yang hanya mengeluarkan log paling penting. Ubah level untuk melihat lebih banyak log sesuai keinginan. Untuk melihat semua log OpenThread, gunakan OT_LOG_LEVEL_DEBG .

Wilayah log

Wilayah log menentukan area mana dari kode OpenThread yang diaktifkan untuk pencatatan. Pencacahan wilayah ditentukan dalam file berikut:

/include/openthread/platform/logging.h

Daftar wilayah log juga tersedia di referensi API Enumerasi Log Platform .

Wilayah log biasanya digunakan sebagai parameter dalam fungsi log. Semua wilayah diaktifkan secara default.

Fungsi logging default

Fungsi default untuk masuk dalam OpenThread adalah otPlatLog , didefinisikan sebagai konstanta konfigurasi waktu kompilasi dari OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

Lihat referensi Platform Logging API untuk informasi lebih lanjut tentang fungsi ini.

Untuk menggunakan fungsi ini secara langsung di aplikasi contoh OpenThread, gunakan tombol build REFERENCE_DEVICE . Misalnya, untuk menggunakannya dalam aplikasi CLI ( examples/apps/cli/main.c ) untuk contoh nRF52840:

make -f examples/Makefile-nrf52840 REFERENCE_DEVICE=1

Alternatifnya, ubah variabel COMMONCFLAGS dalam contoh Makefile untuk mengaktifkannya secara default saat membuat.

Cara mengaktifkan log

Sebelum mengaktifkan log, pastikan lingkungan Anda dikonfigurasi untuk membuat OpenThread. Lihat Membangun OpenThread untuk informasi lebih lanjut.

Aktifkan semua log

Untuk mengaktifkan semua level dan wilayah log dengan cepat, gunakan tombol build FULL_LOGS :

make -f examples/Makefile-simulation FULL_LOGS=1

Sakelar ini menyetel tingkat log ke OT_LOG_LEVEL_DEBG dan mengaktifkan semua bendera wilayah.

Aktifkan tingkat log tertentu

Untuk mengaktifkan tingkat log tertentu, edit /src/core/config/logging.h dan perbarui OPENTHREAD_CONFIG_LOG_LEVEL ke tingkat yang diinginkan, lalu buat OpenThread. Misalnya, untuk mengaktifkan log hingga OT_LOG_LEVEL_INFO :

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
make -f examples/Makefile-simulation

Lihat log di syslog

Log dikirim ke syslog secara default. Di Linux, ini adalah /var/log/syslog.

  1. Buat contoh simulasi dengan semua log diaktifkan:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  2. Mulai node simulasi:
    ./output/x86_64-unknown-linux-gnu/bin/ot-cli-ftd 1
    
  3. Di jendela terminal baru, atur keluaran waktu nyata dari log OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. Pada node yang disimulasikan, buka Thread:
    dataset init new
    Done
    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d/64
    Master Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    
  5. Beralih kembali ke jendela terminal yang menjalankan perintah tail . Log harus ditampilkan secara real time untuk node yang disimulasikan:
    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)
    

Catat tag log di keluaran: [INFO] , [DEBG] , [NOTE] . Ini semua sesuai dengan level log . Misalnya, jika Anda mengubah tingkat log ke OT_LOG_LEVEL_INFO , log DEBG menghilang dari keluaran.

Lihat log di aplikasi CLI

Log dapat dilihat langsung di aplikasi contoh CLI OpenThread.

  1. Edit file konfigurasi untuk platform contoh dan ubah keluaran log ke aplikasi. Untuk contoh simulasi, ini adalah /examples/platforms/sim/openthread-core-sim-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Buat contoh simulasi dengan tingkat log yang diinginkan. Untuk mengaktifkan semua log:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  3. Mulai node simulasi:
    ./output/x86_64-apple-darwin/bin/ot-cli-ftd 1
    
  4. Anda akan melihat keluaran log di jendela yang sama dengan CLI OpenThread saat perintah diproses.

Jika Anda telah menambahkan logging kustom dan mengaktifkan semua log, buffer transmisi UART mungkin tidak cukup besar untuk menangani log kustom tambahan. Jika beberapa log tidak muncul saat seharusnya, coba tingkatkan ukuran buffer transmisi UART, yang didefinisikan sebagai OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE di /src/cli/cli_config.h atau file konfigurasi platform, seperti /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h .

Lihat log untuk NCP

Log untuk NCP dapat dikirim melalui wpantund ke syslog host. Untuk host Linux, ini adalah /var/log/syslog.

Gunakan nilai OPENTHREAD_CONFIG_LOG_OUTPUT dari OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL untuk mengaktifkan logging NCP. Ubah ini di file konfigurasi platform.

Misalnya, untuk mengaktifkan ini untuk nrf52840 yang terhubung ke host Linux:

  1. Edit file konfigurasi untuk platform dan ubah output log ke NCP Spinel. Untuk nrf52840, ini adalah /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL
    
  2. Buat contoh nrf52840 dengan tingkat log yang diinginkan dan tanda khusus NCP lainnya. Untuk membangun joiner dengan semua log diaktifkan:
    make -f examples/Makefile-nrf52840 JOINER=1 USB=1 FULL_LOGS=1
    
  3. Flash NCP, hubungkan ke host Linux, dan mulai wpantund seperti yang dijelaskan di OpenThread Hardware Codelab .
  4. Setelah NCP berjalan, periksa syslog di mesin Linux:
    tail -F /var/log/syslog | grep "ot-ncp-ftd"
    
  5. Anda akan melihat log OpenThread ditampilkan secara real time untuk NCP. Anda juga dapat melihatnya di output wpantund .

Ubah level log pada waktu proses

Tingkat log dapat berubah pada waktu proses jika kontrol tingkat log dinamis diaktifkan.

  1. Edit /src/core/config/logging.h dan setel OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL ke 1 .
  2. Ubah level log tergantung pada penerapan Anda:
    1. Untuk system-on-chip (SoC) , gunakan Logging API dalam aplikasi OpenThread Anda.
    2. Untuk NCP, gunakan wpanctl pada baris perintah:
      wpanctl set OpenThread:LogLevel 5
      
      Lihat wpan-properties.h di repositori wpantund untuk semua properti yang diekspos ke wpanctl dan Spinel API untuk definisi level log-nya.