Logging

NetLogo 4.0.4   Manuel de l'utilisateur  

L'outil NetLogo appelé Logging (journal de bord) permet au directeur d'exercice d'enregistrer les actions des étudiants pour une analyse ultérieure.

Une fois lancé et initialisé, l'outil Logging est invisible pour l'utilisateur. L'enseignant peut choisir le type d'événements à enregistrer au moyen d'un fichier de configuration.

La totalité des informations recueillies lors d'une session NetLogo est appelée journal de bord. Ce journal est constitué des rapports qui sont envoyés chaque fois qu'un étudiant effectue une des manoeuvres spécifiées dans le fichier de configuration. Le coeur de ce fichier est constitué de rapporteurs ("loggers") qui spécifient les événements à surveiller, chaque rapporteur envoyant un type de rapport particulier.

NetLogo utilise le paquet de logiciels Log4j pour son travail de surveillance et d'enregistrement. Si vous avez déjà travaillé avec cet outil, vous ne serez pas dépaysé avec le Logging de NetLogo.

Démarrer l'enregistrement

La marche à suivre dépend du système d'exploitation utilisé.

Mac OS X ou Windows

Le répertoire NetLogo contient un lanceur spécial appelé NetLogo Logging. Double-cliquez sur son icône.

Avec Windows, le répertoire NetLogo se trouve à l'adresse C:\Program Files, à moins que vous n'ayez choisi un autre emplacement au moment de l'installation de NetLogo.

Linux et autres

Pour activer Logging, appelez le script netlogo.sh de la manière suivante :

netlogo.sh --logging netlogo_logging.xml    

Vous pouvez aussi modifier le script pour y inclure ces drapeaux, ou copier le script et modifier la copie (c'est plus prudent).

Vous pouvez remplacer le fichier netlogo_logging.xml par tout fichier de configuration log4j valide écrit en XML, fichier dont nous discuterons plus loin en détail.

Utiliser Logging

Quand NetLogo démarre, il ouvre une boîte de dialogue qui demande un nom d'utilisateur. Ce nom apparaîtra dans tous les rapports générés au cours de la session.

Où les journaux sont-il stockés ?

Les rapports sont stockés dans le répertoire temp spécifique au système d'exploitation. Sur la plupart des systèmes de type Unix (y compris MacOS), il s'agit du répertoire temp. Sur Windows XP, les rapports peuvent être trouvés dans le répertoire c:\Documents and Settings\<user>\Local Settings\Temp, où <user> est le nom de l'utilisateur donné au démarrage, et sur Windows Vista, ces rapports se trouvent dans c:\Users\<user>\AppData\Local\Temp.

Deux commandes pratiques vont vous aider à gérer ces rapports. __zip-log-files filename rassemble tous les rapports présents dans le répertoire temp et les comprime dans un fichier zip, sauvegardé à l'emplacement spécifié. Après l'exécution de __zip-log-files, les rapports existants ne sont pas effacés, mais vous pouvez le faire explicitement avec la commande __delete-log-files.

Le tableau suivant décrit les noms de tous les rapports enregistrables, le type des événements enregistrés dans chaque rapport, à quel niveau, ainsi qu'un exemple de sortie utilisant XMLLayout. Tous les rapports se trouvent dans le fichier org.nlogo.api.Logger. Quand vous faites référence aux types de rapports dans le fichier de configuration, vous devez utiliser le nom complet. Ainsi, le rapport GLOBALS doit être désigné par org.nlogo.api.Logger.GLOBALS.

Rapport Événement Niveau Exemple
GLOBALS une variable globale est modifiée info, debug
<event logger="org.nlogo.api.Logger.GLOBALS" 
       timestamp="1177341065988" 
       level="INFO" 
       type="globals">
   <name>FOO</name>
   <value>51.0</value>
</event>
GREENS des curseurs, commutateurs, sélecteurs, boîtes d'entrée ont été modifiés via l'interface info
<event logger="org.nlogo.api.Logger.GREENS" 
       timestamp="1177341065988" 
       level="INFO" 
       type="slider">
  <action>changed</action>
  <name>foo</name>
  <value>51.0</value>
  <parameters>
    <min>0.0</min>
    <max>100.0</max>
    <inc>1.0</inc>
  </parameters>
</event>
CODE le code est compilé, y compris: centre de commande, panneau "Procedures", limites des curseurs et boutons info
<event logger="org.nlogo.api.Logger.CODE" 
       timestamp="1177341072208" 
       level="INFO" 
       type="command center">
  <action>compiled</action>
  <code>crt 1</code>
  <agentType>O</agentType>
   <errorMessage>success</errorMessage>
</event>
WIDGETS un objet (widget) a été ajouté ou retiré de l'interface info
<event logger="org.nlogo.api.Logger.WIDGETS" 
       timestamp="1177341058351" 
       level="INFO" 
       type="slider">
  <name></name>
  <action>added</action>
</event>
BUTTONS un bouton a été pressé ou relâché info
<event logger="org.nlogo.api.Logger.BUTTONS" 
        timestamp="1177341053679" 
        level="INFO" 
        type="button">
  <name>show 1</name>
  <action>released</action>
  <releaseType>once</releaseType>
</event>
SPEED_SLIDER le curseur vitesse a été modifié info
<event logger="org.nlogo.api.Logger.SPEED" 
       timestamp="1177341042202" 
       level="INFO" 
       type="speed">
  <value>0.0</value>
</event>
TURTLES des tortues sont mortes ou sont nées info
<event logger="org.nlogo.api.Logger.TURTLES" 
       timestamp="1177341094342" 
       level="INFO" 
       type="turtle">
  <name>turtle 1</name>
  <action>born</action>
  <breed>TURTLES</breed>
</event>
LINKS des liens sont morts ou sont nés info
<event logger="org.nlogo.api.Logger.LINKS" 
       timestamp="1177341094347" 
       level="INFO" 
       type="link">
  <name>link 0 1</name>
  <action>born</action>
  <breed>LINKS</breed>
</event>

Comment configurer la sortie du journal

Le fichier de configuration par défaut du journal (netlogo_logging.xml) ressemble à peu près à celui montré ci-dessous.

NetLogo définit 8 rapporteurs, descendant tous du rapporteur racine, ce qui signifie, à moins que vous ne spécifiiez des propriétés (appender, layout et output level) dans le fichier de configuration, propriétés que ces rapporteurs hériteront de la racine. Dans le fichier de configuration par défaut, la racine est placée au niveau INFO, l'appender est org.nlogo.api.XMLFileAppender et le layout est org.nlogo.api.XMLLayout. Ensemble, ils génèrent un fichier XML joliment formaté comme défini dans le fichier netlogo_logging.dtd qui est lui-même basé sur le dtd log4j. Si l'appender est un FileAppender (incluant XMLFileAppender), un nouveau fichier est créé chaque fois que l'utilisateur ouvre un modèle.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="false" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="A1" class="org.nlogo.api.XMLFileAppender"> <layout class="org.nlogo.api.XMLLayout"/> </appender>
<category name="org.nlogo.api.Logger.WIDGETS"> <priority value="off" /> </category>
<category name="org.nlogo.api.Logger.TURTLES"> <priority value="off" /> </category>
<category name="org.nlogo.api.Logger.LINKS"> <priority value="off" /> </category>
<root> <priority value ="info" /> <appender-ref ref="A1" /> </root>
</log4j:configuration>

Cette configuration définit d'abord une appender nommé "A1" de type XMLFileAppender avec un XMLLayout. L'appender définit l'endroit où les données fournies par les rapporteurs doivent aller, dans notre cas dans un fichier. En réalité, si NetLogo reçoit un FileAppender, il commence automatiquement un nouveau fichier chaque fois que l'utilisateur ouvre un nouveau modèle. Le FileAppender fait aussi quelques formatages et écrits les en-têtes appropriées dans le fichier. Le layout définit comment écrire chaque message individuel. À moins que vous ne soyez un utilisateur avancé, il n'y a aucune raison de modifier (ou de se soucier) de l'appender et du layout.

Notez la définition du rapporteur de base à la fin du fichier de configuration. Tous les autres rapporteurs descendent du rapporteur de base et, de ce fait, héritent des propriétés de cette racine, à moins qu'il n'en ait été spécifié autrement. Ce cas est remarquablement simple, car, ayant spécifié l'appender A1, nous en faisons l'appender par défaut pour la racine (et pour tous les autres rapporteurs) et spécifions "INFO" comme propriété par défaut. Les messages qui sont rapportés au niveau INFO ou à un niveau supérieur seront notés, ceux qui le seront à un niveau inférieur ne le seront pas. Notez qu'à une seule exception près, NetLogo rapporte toujours au niveau INFO. Des réglages au niveau global qui ne changent pas la valeur des variables globales sont reportées au niveau DEBUG. Ce qui signifie que ces messages sont désactivés par défaut puisque le niveau debug est inférieur au niveau info. Le reste du corps du fichier de configuration supplante les propriétés du rapporteur racine dans quelques rares rapporteurs spécifiques (ou catégories puisqu'elles sont connues dans le fichier de configuration, ces termes pouvant être considérés comme synonymes dans le cas de ce document). Il s'ensuit qu'il désactive les rapporteurs WIDGET, TURTLES et LINKS par défaut. Pour les réactiver, vous devez remplacer la valeur off de priotity par la valeur info, de la manière suivante :

        <category name="org.nlogo.api.Logger.TURTLES">
          <priority value="info" />
        </category>

ou vous pouvez tout simplement enlever toute la référence à la catégorie dans le fichier de configuration, car elle ne sert à rien d'autre.

Configuration avancée

Ce qui précède n'est qu'une introduction sommaire aux fichiers de configuration pour l'élaboration de journaux de marche en NetLogo. Il y a bien d'autres options de configuration disponibles dans le canevas de log4j. Voir la documentation log4j.