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:
Observação: as constantes de configuração no nível da plataforma substituem as principais padrão. Se uma constante for definida no nível do núcleo e da plataforma, a alteração do padrão do núcleo não terá efeito.
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:
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 .
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:
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 .
Nota: O tamanho do código compilado aumenta quanto mais logs são ativados.
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:
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:
Como alternativa, modifique a variável COMMONCFLAGS em um Makefile exemplo para habilitá-lo por padrão durante a construção.
Nota: No aplicativo de exemplo de simulação, REFERENCE_DEVICE é habilitado por padrã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 :
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 :
Ver logs no syslog
Os logs são enviados ao syslog por padrão. No Linux, é /var/log/syslog.
Construa o exemplo de simulação com todos os logs habilitados:
Em uma nova janela de terminal, configure uma saída em tempo real dos logs OT:
No nó simulado, abra Thread:
Volte para a janela do terminal executando o comando tail . Os logs devem ser exibidos em tempo real para o nó simulado:
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.
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 :
Construa o exemplo de simulação com o nível desejado de toras. Para habilitar todos os registros:
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:
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 :
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:
wpantund o NCP, conecte-o ao host Linux e inicie o wpantund conforme detalhado no OpenThread Hardware Codelab .
Assim que o NCP estiver em execução, verifique o syslog na máquina Linux:
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.
Edite /src/core/config/logging.h e defina OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL para 1 .
Altere o nível de registro de acordo com sua implementação:
Para um sistema no chip (SoC) , use a API Logging em seu aplicativo OpenThread.
Para um NCP, use wpanctl na linha de comandos:
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.