# Orbeon logging ## Fichier modifiés / ajouter - WEB-INF/orbeon-coleman/config/properties-local.xml ```xml <!-- LOGGING --> <property as="xs:NMTOKENS" name="oxf.xforms.logging.debug"> control event action </property> ``` ### Librairie ajoutée - orbeon-logging - petit module java : https://git.stable.innovation.insee.eu/sic/collecte-web/orbeon-logging - Ajout d'un filtre pour récupérer l'id de session, l'adresse IP et le user-agent pour la log - log4j.xml (ajout dans le pattern de `sessionId:%X{sessionId}` ) ```xml <appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${catalina.base}/logs/orbeon.log"/> <param name="MaxFileSize" value="1MB"/> <param name="maxBackupIndex" value="200"/> <param name="Append" value="false" /> <param name="Encoding" value="UTF-8"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} %x - sessionId:%X{sessionId} - %m%n"/> </layout> </appender> <!-- XForms engine activity, see http://wiki.orbeon.com/forms/doc/developer-guide/xforms-logging --> <category name="org.orbeon.oxf.xforms.processor.XFormsServer"> <priority value="debug"/> </category> ``` - web.xml ```xml <!-- logging --> <filter> <filter-name>LoggingSessionIdFilter</filter-name> <filter-class>fr.insee.orbeon.logging.LoggingSessionIdFilter</filter-class> </filter> <filter-mapping> <filter-name>LoggingSessionIdFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` ## Ce qui reste à faire - réduire un peu la log inutile - traduire la log orbeon via logstash - la pousser sur ELK ## Filtrer la log pour ne garder que le contenu utile à l'exploitation des paradonnées ### Création d'un appender spécifique paradonnées ``` xml <!-- Logging to a rolling files. Every time the file exceeds a certain size, a backup is created and the file used for logging is truncated. See: http://logging.apache.org/log4j/docs/api/org/apache/log4j/RollingFileAppender.html --> <appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${catalina.base}/logs/orbeon-paradonnees.log"/> <param name="MaxFileSize" value="1MB"/> <param name="maxBackupIndex" value="200"/> <param name="Append" value="false" /> <param name="Encoding" value="UTF-8"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} %x - %m%n"/> </layout> <filter class="fr.insee.orbeon.logging.CustomFilterParadonnees" /> </appender> ``` où `fr.insee.orbeon.logging.CustomFilterParadonnees` = ```java package fr.insee.orbeon.logging; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; public class CustomFilterParadonnees extends Filter { public int decide(LoggingEvent event) { String msg = event.getRenderedMessage(); if (msg.equals("Message à intercepter")) { // à remplacer par un ou des pattern(s) de ligne à matcher return Filter.ACCEPT; } return Filter.DENY; } } ```