Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Nhật ký OpenThread

Nhật ký OpenThread được kiểm soát bởi nhiều hằng số cấu hình thời gian biên dịch. Trừ khi có ghi chú khác, các hằng số này được định nghĩa trong tệp sau:

/src/core/config/logging.h

Phương thức đầu ra

OpenThread hỗ trợ các phương pháp ghi đầu ra khác nhau, được định nghĩa là hằng số cấu hình thời gian biên dịch của OPENTHREAD_CONFIG_LOG_OUTPUT . Các tùy chọn phương pháp ghi nhật ký được liệt kê trong tệp sau:

/src/core/config/logging.h

Cấu hình đầu ra nhật ký mặc định là OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED .

Phương thức đầu ra là một ví dụ về nơi bạn có thể cần cập nhật hằng số cấu hình cấp nền tảng thay vì hằng số cốt lõi. Ví dụ: để thay đổi phương thức xuất trong ứng dụng ví dụ sim, hãy chỉnh sửa /examples/platforms/sim/openthread-core-sim-config.h thay vì /src/core/config/logging.h .

Mức độ nhật ký

Nhật ký có thể xuất ra các mức thông tin khác nhau, được định nghĩa là hằng số cấu hình thời gian biên dịch của OPENTHREAD_CONFIG_LOG_LEVEL . Các tùy chọn cấp độ được liệt kê trong tệp sau:

/include/openthread/platform/logging.h

Danh sách các cấp độ nhật ký cũng có sẵn trong tài liệu tham khảo API Macro ghi nhật ký nền tảng .

Cấp nhật ký mặc định là OT_LOG_LEVEL_CRIT chỉ xuất ra các nhật ký quan trọng nhất. Thay đổi cấp độ để xem nhiều nhật ký hơn như mong muốn. Để xem tất cả nhật ký OpenThread, hãy sử dụng OT_LOG_LEVEL_DEBG .

Ghi các vùng

Các vùng nhật ký xác định vùng nào của mã OpenThread được kích hoạt để ghi nhật ký. Việc liệt kê vùng được xác định trong tệp sau:

/include/openthread/platform/logging.h

Danh sách các khu vực nhật ký cũng có sẵn trong tài liệu tham khảo API Đăng ký Nền tảng .

Các vùng nhật ký thường được sử dụng làm tham số trong các hàm nhật ký. Tất cả các khu vực được bật theo mặc định.

Chức năng ghi nhật ký mặc định

Hàm mặc định để đăng nhập trong OpenThread là otPlatLog , được định nghĩa là hằng số cấu hình thời gian biên dịch của OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

Xem tham chiếu API ghi nhật ký nền tảng để biết thêm thông tin về chức năng này.

Để sử dụng chức năng này trực tiếp trong ứng dụng mẫu OpenThread, hãy sử dụng công tắc xây dựng REFERENCE_DEVICE . Ví dụ: để sử dụng nó trong ứng dụng CLI (example examples/apps/cli/main.c ) cho ví dụ nRF52840:

make -f examples/Makefile-nrf52840 REFERENCE_DEVICE=1

Ngoài ra, hãy sửa đổi biến COMMONCFLAGS trong Makefile để bật nó theo mặc định khi xây dựng.

Cách bật nhật ký

Trước khi bật nhật ký, hãy đảm bảo rằng môi trường của bạn được định cấu hình để xây dựng OpenThread. Xem Xây dựng OpenThread để biết thêm thông tin.

Bật tất cả nhật ký

Để bật nhanh tất cả các cấp và khu vực nhật ký, hãy sử dụng công FULL_LOGS xây dựng FULL_LOGS :

make -f examples/Makefile-simulation FULL_LOGS=1

Công tắc này đặt mức nhật ký thành OT_LOG_LEVEL_DEBG và bật tất cả các cờ khu vực.

Bật một mức nhật ký cụ thể

Để bật một cấp nhật ký cụ thể, hãy chỉnh sửa /src/core/config/logging.h và cập nhật OPENTHREAD_CONFIG_LOG_LEVEL lên cấp mong muốn, sau đó xây dựng OpenThread. Ví dụ: để bật nhật ký lên đến OT_LOG_LEVEL_INFO :

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

Xem nhật ký trong nhật ký hệ thống

Nhật ký được gửi đến syslog theo mặc định. Trên Linux, đây là /var/log/syslog.

  1. Xây dựng ví dụ mô phỏng với tất cả nhật ký được bật:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  2. Bắt đầu một nút mô phỏng:
    ./output/x86_64-unknown-linux-gnu/bin/ot-cli-ftd 1
    
  3. Trong cửa sổ đầu cuối mới, hãy thiết lập đầu ra thời gian thực của nhật ký OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. Trên nút mô phỏng, hiển thị Chủ đề:
    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. Chuyển trở lại cửa sổ đầu cuối chạy lệnh tail . Nhật ký sẽ hiển thị trong thời gian thực cho nút mô phỏng:
    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)
    

Lưu ý các thẻ nhật ký trong đầu ra: [INFO] , [DEBG] , [NOTE] . Tất cả đều tương ứng với các cấp độ nhật ký . Ví dụ: nếu bạn thay đổi cấp độ nhật ký thành OT_LOG_LEVEL_INFO , nhật ký DEBG biến mất khỏi đầu ra.

Xem nhật ký trong ứng dụng CLI

Nhật ký có thể được xem trực tiếp trong ứng dụng ví dụ OpenThread CLI.

  1. Chỉnh sửa tệp cấu hình cho nền tảng mẫu và thay đổi đầu ra nhật ký cho ứng dụng. Đối với ví dụ mô phỏng, đây là /examples/platforms/sim/openthread-core-sim-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Xây dựng ví dụ mô phỏng với cấp độ nhật ký mong muốn. Để bật tất cả nhật ký:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  3. Bắt đầu một nút mô phỏng:
    ./output/x86_64-apple-darwin/bin/ot-cli-ftd 1
    
  4. Bạn sẽ thấy đầu ra nhật ký trong cùng một cửa sổ với OpenThread CLI khi các lệnh được xử lý.

Nếu bạn đã thêm ghi nhật ký tùy chỉnh và bật tất cả nhật ký, thì bộ đệm truyền UART có thể không đủ lớn để xử lý các nhật ký tùy chỉnh bổ sung. Nếu một số nhật ký không xuất hiện khi cần, hãy thử tăng kích thước của bộ đệm truyền UART, được xác định là OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE trong /src/cli/cli_config.h hoặc tệp cấu hình của nền tảng, chẳng hạn như /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h .

Xem nhật ký cho một NCP

Nhật ký cho một NCP có thể được gửi qua wpantund đến syslog của máy chủ. Đối với máy chủ Linux, đây là /var/log/syslog.

Sử dụng giá trị OPENTHREAD_CONFIG_LOG_OUTPUT của OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL để bật ghi nhật ký NCP. Thay đổi điều này trong tệp cấu hình của nền tảng.

Ví dụ: để bật điều này cho nrf52840 được kết nối với máy chủ Linux:

  1. Chỉnh sửa tệp cấu hình cho nền tảng và thay đổi đầu ra nhật ký thành NCP Spinel. Đối với nrf52840, đây là /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL
    
  2. Xây dựng ví dụ nrf52840 với cấp độ nhật ký mong muốn và các cờ NCP cụ thể khác. Để tạo trình kết hợp với tất cả nhật ký được bật:
    make -f examples/Makefile-nrf52840 JOINER=1 USB=1 FULL_LOGS=1
    
  3. Flash NCP, kết nối nó với máy chủ Linux và khởi động wpantund như được trình bày chi tiết trong OpenThread Hardware Codelab .
  4. Khi NCP đang chạy, hãy kiểm tra syslog trên máy Linux:
    tail -F /var/log/syslog | grep "ot-ncp-ftd"
    
  5. Bạn sẽ thấy nhật ký OpenThread hiển thị trong thời gian thực cho NCP. Bạn cũng có thể thấy chúng trong đầu ra wpantund .

Thay đổi cấp độ nhật ký tại thời điểm chạy

Các cấp độ nhật ký có thể được thay đổi tại thời điểm chạy nếu điều khiển cấp độ nhật ký động được bật.

  1. Chỉnh sửa /src/core/config/logging.h và đặt OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL thành 1 .
  2. Thay đổi cấp độ nhật ký tùy thuộc vào việc triển khai của bạn:
    1. Đối với hệ thống trên chip (SoC) , hãy sử dụng API ghi nhật ký trong ứng dụng OpenThread của bạn.
    2. Đối với NCP, hãy sử dụng wpanctl trên dòng lệnh:
      wpanctl set OpenThread:LogLevel 5
      
      Xem wpan-properties.h trong kho lưu trữ wpantund để biết tất cả các thuộc tính được tiếp xúc với wpanctlAPI Spinel để biết các định nghĩa mức nhật ký của nó.