Os registros 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:
openthread/src/core/config/logging.h
Métodos de saída
O OpenThread é compatível com diferentes métodos de geração de registros de saída, definidos como a
constante de configuração de tempo de compilação de OPENTHREAD_CONFIG_LOG_OUTPUT
. As opções de método de geração de registros estão listadas no seguinte arquivo:
openthread/src/core/config/logging.h
A configuração padrão de saída de registros é
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
O método de saída é um exemplo de onde talvez seja necessário atualizar a constante de configuração no nível da plataforma em vez da principal. Por exemplo, para
mudar o método de saída no app de exemplo de simulação, edite
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
em vez de
openthread/src/core/config/logging.h
.
Níveis de registro
Os registros podem gerar níveis variados de informações, definidos como a constante de configuração
de tempo de compilação de OPENTHREAD_CONFIG_LOG_LEVEL
. As opções de nível estão listadas no seguinte arquivo:
openthread/include/openthread/platform/logging.h
A lista de níveis de registro também está disponível na referência da API Macros de registro da plataforma.
O nível de registro padrão é OT_LOG_LEVEL_CRIT
, que só gera os registros mais
críticos. Mude o nível para ver mais registros, conforme necessário. Para ver todos os registros do
OpenThread, use OT_LOG_LEVEL_DEBG
.
Regiões de registro
As regiões de registro em log determinam quais áreas do código OpenThread são ativadas para registro em log. A enumeração de regiões é definida no seguinte arquivo:
openthread/include/openthread/platform/logging.h
A lista de regiões de registro também está disponível na referência da API Enumerações de registro da plataforma.
As regiões de registro são usadas com frequência como parâmetros em funções de registro. Todas as regiões são ativadas por padrão.
Função de geração de registros padrão
A função padrão para geração de registros no OpenThread é otPlatLog
, definida como a constante de configuração de tempo de compilação de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Consulte a referência da API Platform Logging para mais informações sobre essa função.
Para usar essa função diretamente nos apps de exemplo do OpenThread, use a opção OT_REFERENCE_DEVICE
cmake. Por exemplo, para usar no app da CLI para o exemplo CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
Como alternativa, atualize o arquivo openthread/etc/cmake/options.cmake
para ativá-lo por padrão ao criar.
Como ativar os registros
Antes de ativar os registros, verifique se o ambiente está configurado para criar o OpenThread. Consulte Criar OpenThread para mais informações.
Ativar todos os registros
Para ativar rapidamente todos os níveis de registro e regiões, use a opção OT_FULL_LOGS
cmake:
./script/build -DOT_FULL_LOGS=ON
Essa chave define o nível de registro como OT_LOG_LEVEL_DEBG
e ativa todas as flags de região.
Ativar um nível específico de registros
Para ativar um nível específico de registros, edite openthread/src/core/config/logging.h
e atualize
OPENTHREAD_CONFIG_LOG_LEVEL
para o nível desejado. Em seguida, crie o OpenThread. Por exemplo, para ativar registros até OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Ver registros no syslog
Por padrão, os registros são enviados para syslog
. No Linux, é /var/log/syslog.
- Crie o exemplo de simulação com todos os registros ativados:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Inicie um nó simulado:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Em uma nova janela do terminal, configure uma saída em tempo real dos registros do OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- No nó simulado, abra a linha de execução:
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
Volte para a janela do terminal que executa o comando tail
. Os registros precisam aparecer em tempo real para o nó simulado. Observe as tags de registro na saída: [INFO]
, [DEBG]
, [NOTE]
. Todos correspondem aos níveis de registro. Por exemplo, se você mudar o nível de registro para OT_LOG_LEVEL_INFO
, os registros DEBG
vão desaparecer da saída.
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)
Ver registros no app da CLI
Os registros podem ser visualizados diretamente no app de exemplo da CLI do OpenThread.
- Edite o arquivo de configuração da plataforma de exemplo e mude a saída de
registro para o app. No exemplo de simulação, isso é
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Crie o exemplo de simulação com o nível de registros desejado. Para ativar todos os
registros:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Inicie um nó simulado:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Você vai ver a saída do registro na mesma janela da CLI OpenThread à medida que os comandos são processados.
Se você adicionou registros personalizados e ativou todos os registros, o buffer de linha da CLI ou o buffer de transmissão UART pode não ser grande o suficiente para processar os registros personalizados adicionais. Se alguns registros não aparecerem quando deveriam, tente aumentar o tamanho do buffer de linha da CLI, definido como OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
em /openthread/src/cli/cli_config.h
, ou o tamanho do buffer de transmissão UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
no arquivo de configuração da plataforma, como /src/nrf52840/openthread-core-nrf52840-config.h
.
Mudar o nível de registro durante a execução
Os níveis de registro podem ser alterados no momento da execução se o controle dinâmico de nível de registro estiver ativado.
- Crie o app com a opção
-DOT_LOG_LEVEL_DYNAMIC=ON
. Por exemplo,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Use a API Logging no seu aplicativo OpenThread.