Traçage des événements


A partir de Ametys 4.6

Ametys 4.6 permet de tracer toutes les actions utilisateurs (connexion, création/modification/suppression de page ou contenu, ...)

Le traçage de ces événements est effectué dans un journal de log et une catégorie spécifique qu'il est nécessaire d'activer.

Pour cela, dans le fichier WEB-INF/log4j.xml, ajouter (ou dé-commenter) les lignes suivantes:

<!-- Specific appender to forensic events -->
<appender name="forensic" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="Encoding" value="UTF-8" />
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
          <param name="FileNamePattern" value="${ametys.home.dir}/logs/forensic-%d.log"/>
        </rollingPolicy>
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d %-5p [%c] (%t;%X{requestURI}) %m%n"/> 
        </layout>
        <filter class="org.ametys.core.util.AmetysExceptionFilter"/>
</appender>

<!-- Category to uncomment to trace events (and its associated appender) -->
<category name="org.ametys.core.trace.ForensicLogger" additivity="false">
   <priority value="info"/>
  <appender-ref ref="forensic"/>
</category>

Le fichier de logs généré est nommé forensic-[DATE].log

La catégorie correspondant aux événements forensic est org.ametys.core.trace.ForensicLogger

La catégorie doit être configurée avec le niveau de log INFO.

Les journaux forensic peuvent devenir très lourds rapidement, veillez à bien cibler le traçage souhaité et éventuellement à prévoir un log tournant pour automatiquement supprimer les anciens journaux.

Les catégories d'événements

Il possible de restreindre les événements à une ou plusieurs sous-catégories d'événements.

Par exemple si on veut activer le traçage des événements utilisateurs qui concerne uniquement la connexion/déconnexion et création/modification de compte, on activera seulement les catégories:

  • org.ametys.core.trace.ForensicLogger.user
  • org.ametys.core.trace.ForensicLogger.account
  • org.ametys.core.trace.ForensicLogger.authentication
<!-- Specific appender to forensic events -->
<appender name="forensic" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="Encoding" value="UTF-8" />
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
          <param name="FileNamePattern" value="${ametys.home.dir}/logs/forensic-%d.log"/>
        </rollingPolicy>
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d %-5p [%c] (%t;%X{requestURI}) %m%n"/> 
        </layout>
        <filter class="org.ametys.core.util.AmetysExceptionFilter"/>
</appender>

<!-- Category to uncomment to trace events (and its associated appender) -->
<category name="org.ametys.core.trace.ForensicLogger.account" additivity="false">
   <priority value="info"/>
  <appender-ref ref="forensic"/>
</category>
<category name="org.ametys.core.trace.ForensicLogger.authentication" additivity="false">
   <priority value="info"/>
  <appender-ref ref="forensic"/>
</category>
<category name="org.ametys.core.trace.ForensicLogger.user" additivity="false">
   <priority value="info"/>
  <appender-ref ref="forensic"/>
</category>

Toutes les catégorie doivent être préfixées par "org.ametys.core.trace.ForensicLogger."

Voici quelques exemples de catégories, la liste n'est pas exhaustive.

 Catégorie

Description

 account

Evénements liés aux comptes utilisateurs: demande d'inscription, création de compte, modification de mot de passe)

 authentification

Evénements liés aux connexion/déconnexion, échec de connexion

 user ou group

Evénements liés aux utilisateurs ou groupes d'utilisateurs (création, modification, suppression, import)

 profile

Evénements liés aux profils de droit (création, modification, suppression)

 content

Evénements liés aux contenus (création, modification, suppression, cycle de vie, affectation d'étiquettes, ...)

 page

Evénements liés aux pages (création, modification, suppression, renommage, affectation d'étiquettes, ...)

Ces catégories possèdent elles-même des sous-categories qu'il est possible de cibler de manière spécifiques.
Par exemple:
- pour tracer uniquement les tentatives de connexion ayant échouée, on activera la catégorie org.ametys.core.trace.ForensicLogger.authentication.form.failed
- pour tracer uniquement les suppressions de page on activera la catégorie org.ametys.core.trace.ForensicLogger.page.deleted

Format des logs

Pour chaque événement, une ligne dans le fichier de log est générée au format suivant:

date/heure INFO (url) [IP] [login#population] event.id (arg1::value1|arg2::value2|...) (header1::value1|header2::value2|...)

On y retrouve dans l'ordre:

  • la date et l'heure de l'événement
  • le niveau de log
  • l'url entre parenthèse
  • l'adresse IP entre crochet
  • l'identifiant de l'utilisateur responsable de l'événement entre crochet
  • l'identifiant de l'événement
  • les arguments lié à l'événement, entre parenthèses et séparés par des |
  • les entêtes de requête http, entre parenthèses et  séparés par des |

Exemples:

2022-11-18 17:11:27,056 INFO (http-nio-8080-exec-1;/catalog/_authenticate) [192.168.0.18] [admin#ametys_demo_users] authentication.login (user::UserIdentity [login=admin, population=ametys_demo_users]|credential-provider::org.ametys.core.authentication.FormBased) (host::localhost:8080|origin::http://localhost:8080|user-agent::Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36|referer::http://localhost:8080/catalog/_authenticate?requestedURL=/catalog/fr/index.html)
2022-11-18 17:13:53,869 INFO (http-nio-8080-exec-4;/cms/generate/catalog/fr/mot-de-passe.html) [0:0:0:0:0:0:0:1] [admin#ametys_demo_users] account.password.change (population::ametys_demo_users|login::admin|site::catalog) (origin::http://localhost:8080|user-agent::Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36|referer::http://localhost:8080/catalog/fr/mot-de-passe.html?login=admin&population=ametys_demo_users&token=60331b26ce1b44cf9af633b87c7d009d|host::localhost:8080)
Retour en haut