Visualizza il codice sorgente su GitHub
I log OpenThread sono controllati da numerose costanti di configurazione in fase di compilazione. Se non diversamente indicato, queste costanti sono definite nel file seguente:
openthread/src/core/config/logging.h
Metodi di output
OpenThread supporta diversi metodi di logging dell'output, definiti come
costante di configurazione del tempo di compilazione di OPENTHREAD_CONFIG_LOG_OUTPUT
. La
le opzioni per i metodi di logging sono elencate nel file seguente:
openthread/src/core/config/logging.h
La configurazione predefinita dell'output di log è
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
Il metodo di output è un esempio di dove potrebbe essere necessario aggiornare
di configurazione a livello di piattaforma
anziché quella principale. Ad esempio, per
cambiare il metodo di output nell'app di simulazione di esempio, modificare
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
anziché
openthread/src/core/config/logging.h
.
Livelli di log
I log possono restituire diversi livelli di informazioni, definiti come tempi di compilazione
costante di configurazione di OPENTHREAD_CONFIG_LOG_LEVEL
. Le opzioni per i livelli sono
elencati nel seguente file:
openthread/include/openthread/platform/logging.h
L'elenco dei livelli di log è disponibile anche nella Piattaforma Riferimento per l'API Logging Macros.
Il livello di log predefinito è OT_LOG_LEVEL_CRIT
e genera solo il maggior numero di dati
log critici. Modifica il livello per visualizzare più log, se vuoi. Per visualizzare tutto
Log OpenThread, utilizza OT_LOG_LEVEL_DEBG
.
Regioni di log
Le regioni dei log determinano per quali aree del codice OpenThread sono abilitate log. L'enumerazione delle regioni è definita nel seguente file:
openthread/include/openthread/platform/logging.h
L'elenco delle regioni di log è disponibile anche nella sezione Piattaforma Riferimento API Logging Enumerations.
Le regioni di log sono comunemente utilizzate come parametri nelle funzioni di log. Tutte le regioni sono sono abilitate per impostazione predefinita.
Funzione di logging predefinita
La funzione predefinita per il logging in OpenThread è otPlatLog
, definita come
la costante di configurazione del tempo di compilazione
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Consulta l'API Platform Logging riferimento per ulteriori informazioni su questa funzione.
Per utilizzare questa funzione direttamente nelle app di esempio OpenThread, utilizza OT_REFERENCE_DEVICE
cmake. Ad esempio, per utilizzarlo all'interno dell'app CLI per l'esempio CC2538:
./script/build -DOT_REFERENCE_DEVICE=ON
In alternativa, aggiorna il file openthread/etc/cmake/options.cmake
in modo da abilitarlo per impostazione predefinita durante la creazione.
Come abilitare i log
Prima di abilitare i log, assicurati che il tuo ambiente sia configurato per la creazione OpenThread. Per ulteriori informazioni, consulta la sezione Creare OpenThread.
Abilita tutti i log
Per abilitare rapidamente tutti i livelli di log e le regioni, utilizza l'opzione cmake di OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Questa opzione imposta il livello di log su OT_LOG_LEVEL_DEBG
e attiva tutte le regioni
e i flag facoltativi.
Abilita un livello specifico di log
Per abilitare un livello specifico di log, modifica openthread/src/core/config/logging.h
e aggiorna
OPENTHREAD_CONFIG_LOG_LEVEL
al livello desiderato, quindi crea OpenThread. Per
esempio, per abilitare log fino a OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Visualizza i log in syslog
I log vengono inviati all'syslog
per impostazione predefinita. Su Linux, è /var/log/syslog.
- Crea l'esempio di simulazione con tutti i log abilitati:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Avvia un nodo simulato:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- In una nuova finestra del terminale, configura un output in tempo reale dei log OT:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Sul nodo simulato, visualizza 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
Torna alla finestra del terminale eseguendo il comando tail
. I log devono essere visualizzati in tempo reale
il nodo simulato. Osserva i tag di log nell'output: [INFO]
, [DEBG]
, [NOTE]
. Questi valori corrispondono
ai livelli di log. Ad esempio, se modifichi il livello di log in OT_LOG_LEVEL_INFO
,
i log DEBG
scompaiono dall'output.
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)
Visualizza i log nell'app interfaccia a riga di comando
I log possono essere visualizzati direttamente nell'app di esempio dell'interfaccia a riga di comando OpenThread.
- Modifica il file di configurazione per la piattaforma di esempio e modifica il log
all'app. Per l'esempio di simulazione, questo è
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Crea l'esempio di simulazione con il livello desiderato di log. Per attivare tutte
log:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Avvia un nodo simulato:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Dovresti vedere l'output del log nella stessa finestra dell'interfaccia a riga di comando OpenThread. vengono elaborati i comandi.
Se hai aggiunto il logging personalizzato e abilitato tutti i registri, il buffer di riga dell'interfaccia a riga di comando o la UART trasmettono
buffer potrebbe non essere abbastanza grande per gestire i log personalizzati aggiuntivi. Se alcuni log non vengono
appaiono quando dovrebbe, prova ad aumentare la dimensione della riga dell'interfaccia a riga di comando
buffer, definito come OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
in
/openthread/src/cli/cli_config.h
o aumentare le dimensioni del buffer di trasmissione UART, definito come
OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
nel file di configurazione della piattaforma, ad esempio
/src/nrf52840/openthread-core-nrf52840-config.h
.
Visualizza i log per un NCP
I log per un NCP possono essere inviati tramite wpantund
al syslog
di un host. Per un
Host Linux, è /var/log/syslog.
Utilizza un valore OPENTHREAD_CONFIG_LOG_OUTPUT
pari a
OPENTHREAD_CONFIG_LOG_OUTPUT_APP
per attivare il logging NCP. Cambia in
al file di configurazione della piattaforma.
Ad esempio, per abilitare questa funzione per un nrf52840 connesso a un host Linux:
- Modifica il file di configurazione per la piattaforma e cambia l'output di log in
l'app. Per nrf52840, è
./src/nrf52840/openthread-core-nrf52840-config.h
nel repository ot-nrf528xx:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- crea l'esempio nrf52840 con il livello desiderato di log e altro
Flag specifici per NCP. Per creare un joiner con tutti i log abilitati:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
Esegui il flashing dell'NCP, connettilo all'host Linux e avvia
wpantund
come descritto in dettaglio nel repository wpantund.Quando NCP è in esecuzione, controlla
syslog
sul computer Linux:tail -F /var/log/syslog | grep "wpantund"
I log OpenThread dovrebbero essere visualizzati in tempo reale per NCP. Puoi anche nell'output
wpantund
.
Modifica il livello di log in fase di esecuzione
I livelli di log possono essere modificati in fase di esecuzione se il controllo dinamico del livello di log è abilitato.
- Crea l'app con l'opzione
-DOT_LOG_LEVEL_DYNAMIC=ON
. Ad esempio:./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Modifica il livello di log in base all'implementazione:
- Per un system-on-chip (SoC), utilizzare l'API Logging nel tuo l'applicazione OpenThread.
- Per un NCP, utilizza
wpanctl
nella riga di comando. Consultawpan-properties.h
nel repositorywpantund
per tutte le proprietà esposte awpanctl
e l'API Spinel per le definizioni a livello di log.wpanctl set OpenThread:LogLevel 5