Visualizza il codice sorgente su GitHub
I log OpenThread sono controllati da numerose costanti di configurazione in fase di compilazione. Salvo diversa indicazione, queste costanti sono definite nel seguente file:
openthread/src/core/config/logging.h
Metodi di output
OpenThread supporta diversi metodi di logging dell'output, definiti come
costante di configurazione in fase di compilazione di OPENTHREAD_CONFIG_LOG_OUTPUT
. Le opzioni del metodo di logging sono elencate nel seguente file:
openthread/src/core/config/logging.h
La configurazione predefinita dell'output dei log è
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
Il metodo di output è un esempio di dove potrebbe essere necessario aggiornare la costante di configurazione a livello di piattaforma anziché quella principale. Ad esempio, per
modificare il metodo di output nell'app di esempio di simulazione, modifica
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
invece di
openthread/src/core/config/logging.h
.
Livelli di log
I log possono restituire livelli di informazioni variabili, definiti come costante di configurazione
in fase di compilazione di OPENTHREAD_CONFIG_LOG_LEVEL
. Le opzioni di livello sono
elencate nel seguente file:
openthread/include/openthread/platform/logging.h
L'elenco dei livelli di log è disponibile anche nei riferimenti per l'API Macro di logging della piattaforma.
Il livello di log predefinito è OT_LOG_LEVEL_CRIT
, che restituisce solo i log più
critici. Modifica il livello per visualizzare più log in base alle tue esigenze. Per visualizzare tutti i log
OpenThread, utilizza OT_LOG_LEVEL_DEBG
.
Regioni di log
Le regioni di log determinano le aree del codice OpenThread abilitate per la registrazione. L'enumerazione delle regioni è definita nel seguente file:
openthread/include/openthread/platform/logging.h
L'elenco delle regioni di log è disponibile anche nei riferimenti per l'API Platform Logging Enumerations.
Le regioni dei log vengono comunemente utilizzate come parametri nelle funzioni di log. Tutte le regioni sono attivate per impostazione predefinita.
Funzione di logging predefinita
La funzione predefinita per la registrazione in OpenThread è otPlatLog
, definita come
la costante di configurazione in fase di compilazione di
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Per ulteriori informazioni su questa funzione, consulta la documentazione di riferimento dell'API Platform Logging.
Per utilizzare questa funzione direttamente nelle app di esempio OpenThread, utilizza l'opzione OT_REFERENCE_DEVICE
di 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
per attivarlo per impostazione predefinita durante la creazione.
Come attivare i log
Prima di abilitare i log, assicurati che l'ambiente sia configurato per la creazione di OpenThread. Per ulteriori informazioni, consulta Creare OpenThread.
Attiva tutti i log
Per attivare rapidamente tutti i livelli di log e le regioni, utilizza l'opzione cmake OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Questo interruttore imposta il livello di log su OT_LOG_LEVEL_DEBG
e attiva tutti i flag
della regione.
Attivare un livello specifico di log
Per attivare un livello specifico di log, modifica openthread/src/core/config/logging.h
e aggiorna
OPENTHREAD_CONFIG_LOG_LEVEL
al livello desiderato, quindi crea OpenThread. Ad esempio, per attivare i log fino a OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Visualizzare i log in syslog
Per impostazione predefinita, i log vengono inviati a syslog
. Su Linux, questo è /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 in cui è in esecuzione il comando tail
. I log devono essere visualizzati in tempo reale per il nodo simulato. Prendi nota dei tag di log nell'output: [INFO]
, [DEBG]
, [NOTE]
. Corrispondono tutti 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)
Visualizzare i log nell'app CLI
I log possono essere visualizzati direttamente nell'app di esempio OpenThread CLI.
- Modifica il file di configurazione per la piattaforma di esempio e cambia l'output
del log nell'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 di log desiderato. Per attivare tutti
i 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 dei log nella stessa finestra della CLI OpenThread durante l'elaborazione dei comandi.
Se hai aggiunto la registrazione personalizzata e abilitato tutti i log, il buffer della riga CLI o il buffer di trasmissione UART
potrebbe non essere abbastanza grande da gestire i log personalizzati aggiuntivi. Se alcuni log non vengono visualizzati quando dovrebbero, prova ad aumentare le dimensioni del buffer della riga CLI, definito come OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
in /openthread/src/cli/cli_config.h
, o ad 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
.
Modificare il livello di log in fase di runtime
I livelli di log possono essere modificati in fase di runtime se è abilitato il controllo dinamico del livello di log.
- 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
- Utilizza l'API Logging all'interno della tua applicazione OpenThread.