Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Logs OpenThread

Os logs do OpenThread são controlados por várias constantes de configuração de tempo de compilação. Salvo indicação em contrário, essas constantes são definidas no seguinte arquivo:

/src/core/config/logging.h

Métodos de saída

OpenThread suporta diferentes métodos de registro de saída, definidos como a constante de configuração de tempo de OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT . As opções do método de registro estão listadas no seguinte arquivo:

/src/core/config/logging.h

A configuração de saída de log padrão é OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED .

O método de saída é um exemplo de onde você pode precisar atualizar a constante de configuração no nível da plataforma em vez da principal. Por exemplo, para alterar o método de saída no aplicativo de exemplo sim, edite /examples/platforms/sim/openthread-core-sim-config.h vez de /src/core/config/logging.h .

Níveis de registro

Os logs podem OPENTHREAD_CONFIG_LOG_LEVEL vários níveis de informações, definidos como a constante de configuração em tempo de OPENTHREAD_CONFIG_LOG_LEVEL de OPENTHREAD_CONFIG_LOG_LEVEL . As opções de nível estão listadas no seguinte arquivo:

/include/openthread/platform/logging.h

A lista de níveis de registro também está disponível na referência da API Platform Logging Macros .

O nível de log padrão é OT_LOG_LEVEL_CRIT que produz apenas os logs mais críticos. Altere o nível para ver mais registros conforme desejado. Para ver todos os logs do OpenThread, use OT_LOG_LEVEL_DEBG .

Regiões de registro

As regiões de registro determinam quais áreas do código OpenThread estão habilitadas para registro. A enumeração da região é definida no seguinte arquivo:

/include/openthread/platform/logging.h

A lista de regiões de registro também está disponível na referência da API Platform Logging Enumerations .

As regiões de log são comumente usadas como parâmetros em funções de log. Todas as regiões são ativadas por padrão.

Função de registro padrão

A função padrão para registro em OpenThread é otPlatLog , definida como a constante de configuração em tempo de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

Consulte a referência da API Platform Logging para obter mais informações sobre esta função.

Para usar essa função diretamente nos aplicativos de exemplo OpenThread, use a opção de compilação REFERENCE_DEVICE . Por exemplo, para usá-lo no aplicativo CLI ( examples/apps/cli/main.c ) para o exemplo nRF52840:

make -f examples/Makefile-nrf52840 REFERENCE_DEVICE=1

Como alternativa, modifique a variável COMMONCFLAGS em um Makefile exemplo para habilitá-lo por padrão durante a construção.

Como habilitar registros

Antes de habilitar os logs, certifique-se de que seu ambiente esteja configurado para construir OpenThread. Consulte Build OpenThread para obter mais informações.

Habilitar todos os registros

Para ativar rapidamente todos os níveis e regiões de registro, use a FULL_LOGS compilação FULL_LOGS :

make -f examples/Makefile-simulation FULL_LOGS=1

Essa opção define o nível de log para OT_LOG_LEVEL_DEBG e ativa todos os sinalizadores de região.

Habilite um nível específico de registros

Para habilitar um nível específico de logs, edite /src/core/config/logging.h e atualize OPENTHREAD_CONFIG_LOG_LEVEL para o nível desejado e, em seguida, crie OpenThread. Por exemplo, para habilitar registros até OT_LOG_LEVEL_INFO :

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

Ver logs no syslog

Os logs são enviados ao syslog por padrão. No Linux, é /var/log/syslog.

  1. Construa o exemplo de simulação com todos os logs habilitados:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  2. Inicie um nó simulado:
    ./output/x86_64-unknown-linux-gnu/bin/ot-cli-ftd 1
    
  3. Em uma nova janela de terminal, configure uma saída em tempo real dos logs OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. No nó simulado, abra 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. Volte para a janela do terminal executando o comando tail . Os logs devem ser exibidos em tempo real para o nó simulado:
    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)
    

Observe as marcas de log na saída: [INFO] , [DEBG] , [NOTE] . Todos eles correspondem aos níveis de log . Por exemplo, se você alterar o nível de log para OT_LOG_LEVEL_INFO , os logs DEBG desaparecerão da saída.

Ver registros no aplicativo CLI

Os registros podem ser visualizados diretamente no aplicativo de exemplo OpenThread CLI.

  1. Edite o arquivo de configuração para a plataforma de exemplo e altere a saída do log para o aplicativo. Para o exemplo de simulação, é /examples/platforms/sim/openthread-core-sim-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Construa o exemplo de simulação com o nível desejado de toras. Para habilitar todos os registros:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  3. Inicie um nó simulado:
    ./output/x86_64-apple-darwin/bin/ot-cli-ftd 1
    
  4. Você deve ver a saída do log na mesma janela que a CLI do OpenThread conforme os comandos são processados.

Se você adicionou o registro personalizado e habilitou todos os registros, o buffer de transmissão do UART pode não ser grande o suficiente para lidar com os registros personalizados adicionais. Se alguns logs não estiverem aparecendo quando deveriam, tente aumentar o tamanho do buffer de transmissão UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE em /src/cli/cli_config.h ou o arquivo de configuração da plataforma, como /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h .

Ver os registros de um NCP

Os logs de um NCP podem ser enviados por meio do wpantund para o syslog de um host. Para um host Linux, é /var/log/syslog.

Use um valor OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL para habilitar o registro NCP. Altere isso no arquivo de configuração da plataforma.

Por exemplo, para habilitar isso para um nrf52840 conectado a um host Linux:

  1. Edite o arquivo de configuração da plataforma e altere a saída do log para NCP Spinel. Para nrf52840, é /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL
    
  2. Construa o exemplo nrf52840 com o nível desejado de logs e outros sinalizadores específicos do NCP. Para construir um joiner com todos os logs habilitados:
    make -f examples/Makefile-nrf52840 JOINER=1 USB=1 FULL_LOGS=1
    
  3. wpantund o NCP, conecte-o ao host Linux e inicie o wpantund conforme detalhado no OpenThread Hardware Codelab .
  4. Assim que o NCP estiver em execução, verifique o syslog na máquina Linux:
    tail -F /var/log/syslog | grep "ot-ncp-ftd"
    
  5. Você deve ver os logs do OpenThread exibidos em tempo real para o NCP. Você também pode vê-los na saída wpantund .

Altere o nível de registro em tempo de execução

Os níveis de log podem ser alterados em tempo de execução se o controle de nível de log dinâmico estiver habilitado.

  1. Edite /src/core/config/logging.h e defina OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL para 1 .
  2. Altere o nível de registro de acordo com sua implementação:
    1. Para um sistema no chip (SoC) , use a API Logging em seu aplicativo OpenThread.
    2. Para um NCP, use wpanctl na linha de comandos:
      wpanctl set OpenThread:LogLevel 5
      
      Consulte wpan-properties.h no repositório wpantund para todas as propriedades expostas a wpanctl e a API Spinel para suas definições de nível de log.