# 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;
}
}
```