---
# System prepended metadata

title: Orbeon logging

---

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


```