Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Nhật ký OpenThread

Xem nguồn trên GitHub

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 xác định trong tệp sau:

openthread/src/core/config/logging.h

Phương thức xuất

OpenThread hỗ trợ nhiều phương thức ghi nhật ký đầu ra, được xác định 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 thức ghi nhật ký được liệt kê trong tệp sau đây:

openthread/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à ví dụ về trường hợp 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ì phương thức lõi. Ví dụ: để thay đổi phương thức đầu ra trong ứng dụng mẫu mô phỏng, hãy chỉnh sửa openthread/examples/platforms/simulation/openthread-core-simulation-config.h thay vì openthread/src/core/config/logging.h.

Các cấp độ nhật ký

Nhật ký có thể xuất các cấp thông tin khác nhau, được xác định dưới dạng hằng số cấu hình thời gian biên dịch là OPENTHREAD_CONFIG_LOG_LEVEL. Các lựa chọn cấp được liệt kê trong tệp sau:

openthread/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 Ghi nhật ký nền tảng.

Cấp độ nhật ký mặc định là OT_LOG_LEVEL_CRIT chỉ ghi lại nhật ký quan trọng nhất. Hãy thay đổi cấp độ để xem thêm nhật ký theo ý muốn. Để xem tất cả nhật ký OpenThread, hãy sử dụng OT_LOG_LEVEL_DEBG.

Vùng nhật ký

Các khu vực nhật ký xác định những khu vực nào của mã OpenThread được bật để ghi nhật ký. Bảng liệt kê vùng được xác định trong tệp sau:

openthread/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 Liệt kê nhật ký.

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

Hàm ghi nhật ký mặc định

Hàm mặc định để ghi nhật ký trong OpenThread là otPlatLog, được xác định là hằng số cấu hình thời gian biên dịch của OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION.

Hãy xem tài liệu tham khảo API Nhật ký nền tảng để biết thêm thông tin về hàm này.

Để sử dụng chức năng này ngay trong các ứng dụng mẫu OpenThread, hãy sử dụng tùy chọn OT_REFERENCE_DEVICE cmake. Ví dụ: để sử dụng mã này trong ứng dụng CLI cho ví dụ CC2538:

./script/build -DOT_REFERENCE_DEVICE=ON

Ngoài ra, hãy cập nhật tệp openthread/etc/cmake/options.cmake để bật tệp theo mặc định khi đang xây dựng.

Cách bật nhật ký

Trước khi bật nhật ký, hãy đảm bảo môi trường của bạn được định cấu hình để tạo OpenThread. Hãy xem phần Build OpenThread (Tạo chuỗi công việc) để biết thêm thông tin.

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

Để nhanh chóng bật tất cả các cấp và khu vực nhật ký, hãy sử dụng tùy chọn tạo OT_FULL_LOGS:

./script/build -DOT_FULL_LOGS=ON

Nút chuyển này sẽ đặt cấp 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 cấp nhật ký cụ thể

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

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

Xem nhật ký trong syslog

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

  1. Tạo ví dụ mô phỏng khi tất cả nhật ký được bật:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. Bắt đầu tạo một nút mô phỏng:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. Trong cửa sổ thiết bị đầ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, hãy hiển thị Chuỗi cuộc trò chuyện:
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
Network 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

Chuyển trở lại cửa sổ dòng lệnh chạy lệnh tail. Nhật ký sẽ hiển thị theo thời gian thực cho nút mô phỏng. Hãy lưu ý rằng các thẻ nhật ký trong dữ liệu đầ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 sẽ biến mất khỏi kết quả.

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)

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

Bạn có thể xem nhật ký trực tiếp trong ứng dụng mẫu 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ý thành ứng dụng. Đối với ví dụ mô phỏng, đây là openthread/examples/platforms/simulation/openthread-core-simulation-config.h:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Tạo ví dụ mô phỏng với cấp độ nhật ký mong muốn. Cách bật tất cả nhật ký:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. Bắt đầu tạo một nút mô phỏng:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. Bạn sẽ thấy kết quả 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 nhật ký tùy chỉnh và bật tất cả nhật ký, thì bộ đệm dòng CLI hoặc bộ đệm truyền UART có thể không đủ lớn để xử lý 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 CLI dòng, được xác định là OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH trong /openthread/src/cli/cli_config.h hoặc tăng kích thước của bộ đệm truyền UART, như được xác định là OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE trong tệp cấu hình của nền tảng, chẳng hạn như /src/nrf52840/openthread-core-nrf52840-config.h.

Xem nhật ký của một NCP

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

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

Ví dụ: để bật tùy chọn 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 ứng dụng. Đối với nrf52840, đây là ./src/nrf52840/openthread-core-nrf52840-config.h trong kho lưu trữ ot-nrf528xx:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Tạo ví dụ về nrf52840 với cấp độ nhật ký mong muốn và các cờ khác dành riêng cho NCP. Cách tạo trình liên kết có bật tất cả nhật ký:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. Flash NCP, kết nối máy chủ này với máy chủ Linux và bắt đầu wpantund như được nêu chi tiết trong kho lưu trữ wpantund.

  4. Sau khi NCP chạy, hãy kiểm tra syslog trên máy Linux:

    tail -F /var/log/syslog | grep "wpantund"
    

  5. Bạn sẽ thấy nhật ký OpenThread hiển thị theo thời gian thực cho NCP. Bạn cũng có thể thấy chúng trong kết quả wpantund.

Thay đổi cấp độ nhật ký vào thời gian chạy

Bạn có thể thay đổi cấp nhật ký vào thời gian chạy nếu bật tính năng kiểm soát cấp nhật ký động.

  1. Tạo ứng dụng có tùy chọn -DOT_LOG_LEVEL_DYNAMIC=ON. Ví dụ:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
  2. Thay đổi cấp nhật ký tùy thuộc vào cách triển khai của bạn:
    1. Đối với system-on-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 dùng wpanctl trên dòng lệnh. Xem wpan-properties.h trong kho lưu trữ wpantund để biết tất cả các thuộc tính đã hiển thị với wpanctlAPI API để biết các định nghĩa ở cấp nhật ký.
      wpanctl set OpenThread:LogLevel 5