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 oferece suporte a diferentes métodos de geração de registros de saída, definidos como
constante de configuração de tempo de compilação de OPENTHREAD_CONFIG_LOG_OUTPUT
. A
as opções do método de geração de registros estão listadas no seguinte arquivo:
openthread/src/core/config/logging.h
A configuração de saída de registro padrão é
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
:
O método de saída é um exemplo de onde pode ser necessário atualizar
de configuração no nível da plataforma em vez da principal. Por exemplo, para
alterar o método de saída no app de exemplo de simulação, editar
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 diversos níveis de informação, definidos como o
constante de configuração de OPENTHREAD_CONFIG_LOG_LEVEL
. As opções de nível são
listados no arquivo a seguir:
openthread/include/openthread/platform/logging.h
A lista de níveis de registro também está disponível no Gerenciador de Referência da API Logging Macros.
O nível de registro padrão é OT_LOG_LEVEL_CRIT
, que gera apenas a maior
registros críticos. Mude o nível para conferir mais registros. Para mostrar tudo
Registros do OpenThread, use OT_LOG_LEVEL_DEBG
.
Regiões de registro
As regiões de registro determinam para quais áreas do código OpenThread estão ativadas geração de registros. A enumeração da região é definida no seguinte arquivo:
openthread/include/openthread/platform/logging.h
A lista de regiões de registro também está disponível na Central de Referência da API Logging Enumerations.
As regiões de registro costumam ser usadas como parâmetros em funções de registro. Todas as regiões são ativada 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
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Consulte a API Platform Logging. para mais informações sobre essa função.
Para usar essa função diretamente nos apps de exemplo do OpenThread, use o método OT_REFERENCE_DEVICE
opção do cmake. Por exemplo, para usá-lo no app CLI para o exemplo CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
Se preferir, atualize o arquivo openthread/etc/cmake/options.cmake
para ativá-lo por padrão na criação.
Como ativar os registros
Antes de ativar os registros, verifique se o ambiente está configurado para criar OpenThread. Consulte Criar OpenThread para mais informações.
Ativar todos os registros
Para ativar rapidamente todos os níveis e regiões de registro, use a opção cmake OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Essa chave define o nível de registro como OT_LOG_LEVEL_DEBG
e ativa todas as regiões
de status.
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 e crie o OpenThread. Para
exemplo, para ativar registros de até OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Ver registros no syslog
Os registros são enviados para syslog
por padrão. No Linux, ele é /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 de OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- No nó simulado, abra o 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
Volte para a janela do terminal executando o comando tail
. Os registros devem ser exibidos em tempo real para
no nó simulado. Observe as tags de registro na saída: [INFO]
, [DEBG]
, [NOTE]
. Todas correspondem
aos níveis de registro. Por exemplo, se você mudar o nível de registro para OT_LOG_LEVEL_INFO
,
os registros DEBG
desaparecem 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)
Conferir os registros no app da CLI
Os registros podem ser visualizados diretamente no app de exemplo da CLI do OpenThread.
- Editar o arquivo de configuração da plataforma de exemplo e alterar o registro
saída ao app. No exemplo de simulação,
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 pretendido. Para ativar todos
registros:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Inicie um nó simulado:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- A saída do registro deve aparecer na mesma janela da CLI do OpenThread, são processados.
Se você tiver adicionado a geração de registros personalizada e ativado todos os registros, o buffer de linha da CLI ou a transmissão do UART
pode não ser grande o suficiente para lidar com os registros personalizados adicionais. Se alguns registros não estiverem
apareça quando deveria, tente aumentar o tamanho da linha da CLI
padrão, definido como OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
no
/openthread/src/cli/cli_config.h
ou o aumento do 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
.
Acessar registros de um NCP
Os registros de um NCP podem ser enviados pelo wpantund
para o syslog
de um host. Para um
Host do Linux, /var/log/syslog.
Use um valor OPENTHREAD_CONFIG_LOG_OUTPUT
de
OPENTHREAD_CONFIG_LOG_OUTPUT_APP
para ativar a geração de registros de NCP. Altere isso em
no arquivo de configuração da plataforma.
Por exemplo, para ativar esse recurso para um nrf52840 conectado a um host do Linux:
- Edite o arquivo de configuração da plataforma e mude a saída do registro para
o app. Para nrf52840, é
./src/nrf52840/openthread-core-nrf52840-config.h
no repositório ot-nrf528xx:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Crie o exemplo nrf52840 com o nível desejado de registros e outros
sinalizações específicas do NCP. Para criar um combinador com todos os registros ativados:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
Atualize o NCP, conecte-o ao host Linux e inicie
wpantund
como detalhadas no repositório wpantund.Quando o NCP estiver em execução, verifique o
syslog
na máquina Linux:tail -F /var/log/syslog | grep "wpantund"
Você verá os registros do OpenThread exibidos em tempo real para o NCP. Você pode eles também aparecem na saída
wpantund
.
Alterar o nível de registro no ambiente de execução
Os níveis de registro podem ser alterados em tempo de execução se o controle de nível de registro dinâmico 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
- Altere o nível de registro dependendo da implementação:
- Para um system-on-chip (SoC), use a API Logging na sua aplicativo OpenThread.
- Para um NCP, use
wpanctl
na linha de comando. Consultewpan-properties.h
no repositóriowpantund
para ver todas as propriedades expostas awpanctl
e a API Spinel para conferir as definições no nível do registro.wpanctl set OpenThread:LogLevel 5