Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Journaux OpenThread

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:

/src/core/config/logging.h

Méthodes de sortie

OpenThread prend en charge différentes méthodes de journalisation de sortie, définies comme la constante de configuration à la compilation de OPENTHREAD_CONFIG_LOG_OUTPUT . Les options de la méthode de journalisation sont répertoriées dans le fichier suivant:

/src/core/config/logging.h

La configuration de sortie de journal par défaut est OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED .

La méthode de sortie est un exemple où vous devrez peut-être mettre à jour la constante de configuration au niveau de la plate-forme au lieu de celle de base. Par exemple, pour changer la méthode de sortie dans l'exemple d'application sim, modifiez /examples/platforms/sim/openthread-core-sim-config.h au lieu de /src/core/config/logging.h .

Niveaux de journal

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 répertoriées dans le fichier suivant:

/include/openthread/platform/logging.h

La liste des niveaux de journalisation est également disponible dans la référence API Platform Logging Macros .

Le niveau de journal par défaut est OT_LOG_LEVEL_CRIT qui ne OT_LOG_LEVEL_CRIT que les journaux les plus critiques. Modifiez le niveau pour afficher plus de journaux selon vos besoins. Pour voir tous les journaux OpenThread, utilisez OT_LOG_LEVEL_DEBG .

Régions du journal

Les régions de journal déterminent quelles zones du code OpenThread sont activées pour la journalisation. L'énumération des régions est définie dans le fichier suivant:

/include/openthread/platform/logging.h

La liste des régions de journal est également disponible dans la référence API Platform Logging Enumerations .

Les régions de journal sont couramment utilisées comme paramètres dans les fonctions de journal. Toutes les régions sont activées par défaut.

Fonction de journalisation par défaut

La fonction par défaut pour la journalisation dans OpenThread est otPlatLog , défini comme la constante de configuration au moment de la compilation de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

Consultez la référence API Platform Logging pour plus d'informations sur cette fonction.

Pour utiliser cette fonction directement dans les exemples d'applications OpenThread, utilisez le commutateur de génération REFERENCE_DEVICE . Par exemple, pour l'utiliser dans l'application CLI ( examples/apps/cli/main.c ) pour l'exemple nRF52840:

make -f examples/Makefile-nrf52840 REFERENCE_DEVICE=1

Vous pouvez également modifier la variable COMMONCFLAGS dans un exemple de Makefile pour l'activer par défaut lors de la construction.

Comment activer les journaux

Avant d'activer les journaux, assurez-vous que votre environnement est configuré pour créer OpenThread. Voir Construire OpenThread pour plus d'informations.

Activer tous les journaux

Pour activer rapidement tous les niveaux de journal et toutes les régions, utilisez le FULL_LOGS génération FULL_LOGS :

make -f examples/Makefile-simulation FULL_LOGS=1

Ce commutateur définit le niveau de OT_LOG_LEVEL_DEBG sur OT_LOG_LEVEL_DEBG et active tous les indicateurs de région.

Activer un niveau spécifique de journaux

Pour activer un niveau spécifique de journaux, éditez /src/core/config/logging.h et mettez à jour OPENTHREAD_CONFIG_LOG_LEVEL au niveau souhaité, puis créez OpenThread. Par exemple, pour activer les journaux jusqu'à OT_LOG_LEVEL_INFO :

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
make -f examples/Makefile-simulation

Afficher les journaux dans syslog

Les journaux sont envoyés au syslog par défaut. Sous Linux, il s'agit de /var/log/syslog.

  1. Créez l'exemple de simulation avec tous les journaux activés:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  2. Démarrer un nœud simulé:
    ./output/x86_64-unknown-linux-gnu/bin/ot-cli-ftd 1
    
  3. 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"
    
  4. Sur le nœud simulé, affichez Thread:
    dataset init new
    Done
    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d/64
    Master Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    
  5. Revenez à la fenêtre du terminal en exécutant la commande tail . Les journaux doivent s'afficher en temps réel pour le nœud simulé:
    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)
    

Notez les balises de journal dans la sortie: [INFO] , [DEBG] , [NOTE] . Ceux-ci correspondent tous aux niveaux de journalisation . Par exemple, si vous modifiez le niveau de journal en OT_LOG_LEVEL_INFO , les journaux DEBG disparaissent de la sortie.

Afficher les journaux dans l'application CLI

Les journaux peuvent être consultés directement dans l'application d'exemple OpenThread CLI.

  1. Modifiez le fichier de configuration de l'exemple de plate-forme et modifiez la sortie du journal dans l'application. Pour l'exemple de simulation, il s'agit de /examples/platforms/sim/openthread-core-sim-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Créez l'exemple de simulation avec le niveau de journaux souhaité. Pour activer tous les journaux:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  3. Démarrer un nœud simulé:
    ./output/x86_64-apple-darwin/bin/ot-cli-ftd 1
    
  4. Vous devriez voir la sortie du journal dans la même fenêtre que l'interface de ligne de commande OpenThread lorsque les commandes sont traitées.

Si vous avez ajouté la journalisation personnalisée et activé tous les journaux, la mémoire tampon de transmission UART peut ne pas être suffisamment grande pour gérer les journaux personnalisés supplémentaires. Si certains journaux n'apparaissent pas quand ils le devraient, essayez d'augmenter la taille du tampon de transmission UART, défini comme OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE dans /src/cli/cli_config.h ou le fichier de configuration de la plate-forme, tel que /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h .

Afficher les journaux pour un NCP

Journaux pour un PCN peuvent être envoyés par wpantund au syslog d'un hôte. Pour un hôte Linux, il s'agit de /var/log/syslog.

Utilisez une valeur OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL pour activer la journalisation NCP. Modifiez cela dans le fichier de configuration de la plate-forme.

Par exemple, pour activer ceci pour un nrf52840 connecté à un hôte Linux:

  1. Modifiez le fichier de configuration de la plate-forme et modifiez la sortie du journal en NCP Spinel. Pour nrf52840, il s'agit de /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL
    
  2. Créez l'exemple nrf52840 avec le niveau souhaité de journaux et d'autres indicateurs spécifiques à NCP. Pour créer un joint avec tous les journaux activés:
    make -f examples/Makefile-nrf52840 JOINER=1 USB=1 FULL_LOGS=1
    
  3. Flashez le NCP, connectez-le à l'hôte Linux et démarrez wpantund comme détaillé dans OpenThread Hardware Codelab .
  4. Une fois le NCP en cours d'exécution, vérifiez le syslog sur la machine Linux:
    tail -F /var/log/syslog | grep "ot-ncp-ftd"
    
  5. Vous devriez voir les journaux OpenThread s'afficher en temps réel pour le NCP. Vous pouvez également les voir dans la sortie wpantund .

Modifier le niveau de journalisation au moment de l'exécution

Les niveaux de journal peuvent être modifiés au moment de l'exécution si le contrôle dynamique du niveau de journal est activé.

  1. Modifiez /src/core/config/logging.h et définissez OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL sur 1 .
  2. Modifiez le niveau de journalisation en fonction de votre implémentation:
    1. Pour un système sur puce (SoC) , utilisez l' API de journalisation dans votre application OpenThread.
    2. Pour un NCP, utilisez wpanctl sur la ligne de commande:
      wpanctl set OpenThread:LogLevel 5
      
      Voir wpan-properties.h dans le référentiel wpantund pour toutes les propriétés exposées à wpanctl et l' API Spinel pour ses définitions de niveau de journal.