Les journaux OpenThread sont contrôlés par de nombreuses constantes de configuration au moment de la compilation. Sauf indication contraire, ces constantes sont définies dans le fichier suivant :
openthread/src/core/config/logging.h
Méthodes de sortie
OpenThread prend en charge différentes méthodes de journalisation des sorties, définies comme la constante de configuration au moment de la compilation de OPENTHREAD_CONFIG_LOG_OUTPUT
. Les options de méthode de journalisation sont listées dans le fichier suivant :
openthread/src/core/config/logging.h
La configuration de sortie du journal par défaut est OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
La méthode de sortie est un exemple de cas où vous devrez peut-être mettre à jour la constante de configuration au niveau de la plate-forme au lieu de celle du cœur. Par exemple, pour modifier la méthode de sortie dans l'application exemple de simulation, modifiez openthread/examples/platforms/simulation/openthread-core-simulation-config.h
au lieu de openthread/src/core/config/logging.h
.
Niveaux de journalisation
Les journaux peuvent générer différents niveaux d'informations, définis comme la constante de configuration au moment de la compilation de OPENTHREAD_CONFIG_LOG_LEVEL
. Les options de niveau sont listées dans le fichier suivant :
openthread/include/openthread/platform/logging.h
La liste des niveaux de journalisation est également disponible dans la documentation de référence de l'API Macros de journalisation de la plate-forme.
Le niveau de journalisation par défaut est OT_LOG_LEVEL_CRIT
, qui n'affiche que les journaux les plus critiques. Modifiez le niveau pour afficher plus de journaux si vous le souhaitez. Pour afficher tous les journaux OpenThread, utilisez OT_LOG_LEVEL_DEBG
.
Régions de journaux
Les régions de journalisation déterminent les zones du code OpenThread qui sont activées pour la journalisation. L'énumération des régions est définie dans le fichier suivant :
openthread/include/openthread/platform/logging.h
La liste des régions de journaux est également disponible dans la documentation de référence de l'API Énumérations de journalisation de la plate-forme.
Les régions de journaux sont couramment utilisées comme paramètres dans les fonctions de journaux. Toutes les régions sont activées par défaut.
Fonction de journalisation par défaut
La fonction de journalisation par défaut dans OpenThread est otPlatLog
, définie comme constante de configuration au moment de la compilation de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Pour en savoir plus sur cette fonction, consultez la documentation de référence de l'API Platform Logging.
Pour utiliser cette fonction directement dans les applications exemples OpenThread, utilisez l'option cmake OT_REFERENCE_DEVICE
. Par exemple, pour l'utiliser dans l'application CLI pour l'exemple CC2538 :
./script/build -DOT_REFERENCE_DEVICE=ON
Vous pouvez également mettre à jour le fichier openthread/etc/cmake/options.cmake
pour l'activer par défaut lors de la compilation.
Activer les journaux
Avant d'activer les journaux, assurez-vous que votre environnement est configuré pour compiler OpenThread. Pour en savoir plus, consultez Compiler OpenThread.
Activer tous les journaux
Pour activer rapidement tous les niveaux de journaux et toutes les régions, utilisez l'option cmake OT_FULL_LOGS
:
./script/build -DOT_FULL_LOGS=ON
Ce commutateur définit le niveau de journal sur OT_LOG_LEVEL_DEBG
et active tous les indicateurs de région.
Activer un niveau de journaux spécifique
Pour activer un niveau de journalisation spécifique, modifiez openthread/src/core/config/logging.h
et remplacez OPENTHREAD_CONFIG_LOG_LEVEL
par le niveau souhaité, puis compilez OpenThread. Par exemple, pour activer les journaux jusqu'à OT_LOG_LEVEL_INFO
:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Afficher les journaux dans syslog
Les journaux sont envoyés à syslog
par défaut. Sous Linux, il s'agit de /var/log/syslog.
.
- Compilez l'exemple de simulation avec tous les journaux activés :
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Démarrez un nœud simulé :
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Dans une nouvelle fenêtre de terminal, configurez une sortie en temps réel des journaux OT :
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Sur le nœud simulé, affichez 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
Revenez à la fenêtre de terminal exécutant la commande tail
. Les journaux doivent s'afficher en temps réel pour le nœud simulé. Notez les tags de journaux dans le résultat : [INFO]
, [DEBG]
, [NOTE]
. Ils correspondent tous aux niveaux de journalisation. Par exemple, si vous définissez le niveau de journalisation sur OT_LOG_LEVEL_INFO
, les journaux DEBG
disparaissent de la sortie.
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)
Afficher les journaux dans l'application CLI
Les journaux peuvent être consultés directement dans l'application exemple OpenThread CLI.
- Modifiez le fichier de configuration de l'exemple de plate-forme et remplacez la sortie du journal par l'application. Pour l'exemple de simulation, il s'agit de
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Créez l'exemple de simulation avec le niveau de journaux souhaité. Pour activer tous les journaux :
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Démarrez un nœud simulé :
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Vous devriez voir les journaux s'afficher dans la même fenêtre que l'interface de ligne de commande OpenThread à mesure que les commandes sont traitées.
Si vous avez ajouté des journaux personnalisés et activé tous les journaux, la mémoire tampon de ligne CLI ou la mémoire tampon de transmission UART peuvent ne pas être assez grandes pour gérer les journaux personnalisés supplémentaires. Si certains journaux ne s'affichent pas alors qu'ils le devraient, essayez d'augmenter la taille du tampon de ligne CLI, définie sur OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
dans /openthread/src/cli/cli_config.h
, ou d'augmenter la taille du tampon de transmission UART, définie sur OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
dans le fichier de configuration de la plate-forme, tel que /src/nrf52840/openthread-core-nrf52840-config.h
.
Modifier le niveau de journalisation au moment de l'exécution
Les niveaux de journaux peuvent être modifiés lors de l'exécution si le contrôle dynamique du niveau de journal est activé.
- Créez l'application avec l'option
-DOT_LOG_LEVEL_DYNAMIC=ON
. Par exemple,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Utilisez l'API Logging dans votre application OpenThread.