Varias constantes de configuración de tiempo de compilación controlan los registros de OpenThread. A menos que se indique lo contrario, estas constantes se definen en el siguiente archivo:
openthread/src/core/config/logging.h
Métodos de salida
OpenThread admite diferentes métodos de registro de salida, definidos como el
constante de configuración de tiempo de compilación de OPENTHREAD_CONFIG_LOG_OUTPUT
. El
Las opciones de métodos de registro se enumeran en el siguiente archivo:
openthread/src/core/config/logging.h
La configuración predeterminada de los resultados de registro es
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
El método de salida es un ejemplo de cuándo quizás debas actualizar
de configuración a nivel de la plataforma
en lugar de la principal. Por ejemplo, para
cambiar el método de salida en la app de ejemplo de simulación, editar
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
en lugar de
openthread/src/core/config/logging.h
Niveles de registro
Los registros pueden generar diferentes niveles de información, definidos como el tiempo de
de configuración de OPENTHREAD_CONFIG_LOG_LEVEL
. Las opciones de niveles son
enumerados en el siguiente archivo:
openthread/include/openthread/platform/logging.h
La lista de niveles de registro también está disponible en el módulo Referencia de la API de macros de Logging
El nivel de registro predeterminado es OT_LOG_LEVEL_CRIT
, que solo da como resultado la mayor cantidad de
los registros críticos. Cambia el nivel para ver más registros como desees. Para ver todas
Los registros de OpenThread usan OT_LOG_LEVEL_DEBG
.
Regiones de registro
Las regiones de registro determinan para qué áreas del código de OpenThread están habilitadas. de los datos. La enumeración de regiones se define en el siguiente archivo:
openthread/include/openthread/platform/logging.h
La lista de regiones de registro también está disponible en el módulo Referencia de la API de enumeraciones de Logging
Las regiones de registro se usan comúnmente como parámetros en funciones de registro. Todas las regiones son habilitado de forma predeterminada.
Función de registro predeterminada
La función predeterminada para el registro en OpenThread es otPlatLog
, que se define como
la constante de configuración de tiempo de compilación de
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
Consulta la API de Platform Logging. para obtener más información sobre esta función.
Para usar esta función directamente en las apps de ejemplo de OpenThread, usa OT_REFERENCE_DEVICE
.
opción de CMake. Por ejemplo, para usarlo dentro de la app de CLI para el ejemplo de CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
Como alternativa, puedes actualizar el archivo openthread/etc/cmake/options.cmake
para habilitarlo de forma predeterminada durante la compilación.
Cómo habilitar los registros
Antes de habilitar los registros, asegúrate de que tu entorno esté configurado para compilar OpenThread. Consulta Cómo compilar OpenThread para obtener más información.
Habilitar todos los registros
Para habilitar rápidamente todos los niveles y regiones de registro, usa la opción de CMake OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Este interruptor establece el nivel de registro en OT_LOG_LEVEL_DEBG
y activa todas las regiones.
marcas.
Habilita un nivel específico de registros
Para habilitar un nivel específico de registros, edita openthread/src/core/config/logging.h
y actualízalo
OPENTHREAD_CONFIG_LOG_LEVEL
al nivel deseado y, luego, compila OpenThread. Para
Por ejemplo, para habilitar registros de hasta OT_LOG_LEVEL_INFO
, haz lo siguiente:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Ver registros en syslog
Los registros se envían a syslog
de forma predeterminada. En Linux, es /var/log/syslog.
.
- Compila el ejemplo de la simulación con todos los registros habilitados:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Inicia un nodo simulado:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- En una nueva ventana de terminal, configura una salida en tiempo real de los registros de OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- En el nodo simulado, abre 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
Vuelve a la ventana de la terminal ejecutando el comando tail
. Los registros se deben mostrar en tiempo real para
el nodo simulado. Observa las etiquetas de registro en el resultado: [INFO]
, [DEBG]
, [NOTE]
. Todas se corresponden
a los niveles de registro. Por ejemplo, si cambias el nivel de registro a OT_LOG_LEVEL_INFO
,
los registros DEBG
desaparecen del resultado.
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)
Visualiza registros en la app de la CLI
Los registros se pueden ver directamente en la app de ejemplo de la CLI de OpenThread.
- Editar el archivo de configuración para la plataforma de ejemplo y cambiar el registro
salida a la app. Para el ejemplo de simulación, esta es
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Compila el ejemplo de la simulación con el nivel de registros deseado. Para habilitar todas
registros:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Inicia un nodo simulado:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Deberías ver el resultado del registro en la misma ventana que la CLI de OpenThread: procesar comandos de SQL.
Si agregaste registros personalizados y habilitaste todos los registros, el búfer de la línea de la CLI o la transmisión UART
no sea lo suficientemente grande para manejar los registros personalizados adicionales. Si algunos registros no son
aparecer cuando deberían, intenta aumentar el tamaño de la línea de la CLI
definido como OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
en
/openthread/src/cli/cli_config.h
o aumentar el tamaño del búfer de transmisión UART, definido como
OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
en el archivo de configuración de la plataforma, como
/src/nrf52840/openthread-core-nrf52840-config.h
Ver registros para un NCP
Los registros de un NCP se pueden enviar a través de wpantund
al syslog
de un host. Para un
Host de Linux, es /var/log/syslog.
Usa un valor OPENTHREAD_CONFIG_LOG_OUTPUT
de
OPENTHREAD_CONFIG_LOG_OUTPUT_APP
para habilitar el registro de NCP. Cambiar esto en
archivo de configuración de la plataforma.
Por ejemplo, para habilitar esto para una nrf52840 conectada a un host de Linux:
- Editar el archivo de configuración de la plataforma y cambiar el resultado del registro a
la aplicación. Para nrf52840, es
./src/nrf52840/openthread-core-nrf52840-config.h
en el repositorio ot-nrf528xx:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Compila el ejemplo nrf52840 con el nivel de registros deseado y otro
Marcas específicas de NCP. Para compilar un Unión con todos los registros habilitados, ejecuta lo siguiente:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
Escribe el NCP en la memoria flash, conéctalo al host de Linux y, luego, inicia
wpantund
de la siguiente manera: se detallan en el repositorio de wpantund.Una vez que se esté ejecutando el NCP, verifica el
syslog
en la máquina de Linux:tail -F /var/log/syslog | grep "wpantund"
Deberías ver que los registros de OpenThread se muestran en tiempo real para el NCP. Puedes también las verás en el resultado de
wpantund
.
Cambia el nivel de registro en el tiempo de ejecución
Los niveles de registro se pueden cambiar en el tiempo de ejecución si el control de nivel de registro dinámico está habilitado.
- Compila la app con la opción
-DOT_LOG_LEVEL_DYNAMIC=ON
. Por ejemplo:
../script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Cambia el nivel de registro según tu implementación:
- Para un sistema en chip (SoC), usa la API de Logging en tu OpenThread.
- Para un NCP, usa
wpanctl
en la línea de comandos. Consultawpan-properties.h
en el repositoriowpantund
para ver todas las propiedades expuestas awpanctl
y la API de Spinnaker para conocer sus definiciones de nivel de registro.wpanctl set OpenThread:LogLevel 5