Skip to content

Journaux

Cette section décrit les différents journeaux disponibles dans la solution.

La solution utilise la technologie Log4j2 pour gérer les journaux. Chaque composantes de la solution possèdent différents ses propres journaux. Le fichier de configuration est situé dans le dossier [répertoire d'installation]/etc et porte le nom log4j2.xml.

Journaux du serveur

Pour le serveur, par défaut, l'application est distribuée avec quelques journaux :

  • wrapper-log : journal principal qui capture les messages de la console de l'application.
  • server-log : journal qui écrit ce qui se déroule sur le serveur.
  • extension-log : journal qui écrit ce qui se déroule lors de l'exécution des différentes extensions.
  • audit-log : journal qui écrit les différents évènements d'audits.
  • transfer-log : journal qui écrit les transferts de fichiers.
  • task-log : journal qui écrit l'état actuel du programmateur de tâches.
  • configurator-log : journal qui écrit les évènements se produisant dans la console administrative.

Journaux de la passerelle

Pour la passerelle, par défaut, l'application est distribuée avec quelques journaux :

  • gateway-log : journal qui écrit ce qui se déroule sur la passerelle.
  • gui-log : journal qui écrit ce qui se déroule dans l'interface web.

Utilisation du format Elastic Common Schema (ECS)

Il est possible à partir de la version 4.20.7 de la solution d'utiliser le format ECS (Elastic Common Schema). Cette amélioration est conçue pour moderniser la manière dont les journaux sont collectés, analysés et utilisés, en vous offrant une meilleure visibilité sur les performances et les événements de votre application. A noter qu'il est tout à fait possible d'utiliser en parallèle le système de journalisation traditionnel et le nouveau système basé sur ECS.

Qu'est-ce que le format ECS ?

Le format ECS est une spécification ouverte qui fournit un ensemble de champs de données communs pour la journalisation. En s'appuyant sur ce schéma standardisé, tous les types de données de journal (logs d'application, métriques, événements de sécurité) peuvent être structurés de manière cohérente.

Les avantages :

Analyse et corrélation simplifiées : Le format ECS élimine la complexité de l'analyse des journaux en garantissant que les données critiques telles que les horodatages, les niveaux de gravité, les messages et les informations sur les exceptions sont toujours situées aux mêmes emplacements standard. Cela facilite l'agrégation, la recherche et l'analyse de vos logs, quel que soit leur type ou leur source.

Intégration transparente avec l'écosystème Elastic : Si vous utilisez des outils comme Elasticsearch, Kibana ou Elastic Stack, l'adoption du format ECS vous permettra de bénéficier d'une intégration prêt à l’emploi presque instantanée. Vous pourrez ainsi utiliser des fonctionnalités avancées de visualisation, de recherche et d'analyse sans avoir à configurer des flux de traitement d'ingestion complexes.

Amélioration de la visibilité et de la résolution des problèmes : En normalisant la structure de vos journaux, il devient beaucoup plus simple de corréler des événements qui proviennent de différentes parties de votre système. Par exemple, vous pouvez rapidement lier un événement de sécurité à un log d'application spécifique ou à une trace de performance, accélérant ainsi la détection et la résolution des problèmes.

Voici un exemple de fichier Log4j.xml qui permet de générer les logs dans le format ECS:

xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
    <Appenders>
        <RollingFile name="server-log" fileName="logs/server.jsonl" filePattern="logs/server-%d{yyyy-MM-dd}.jsonl">
            <JsonTemplateLayout eventTemplateUri="classpath:sfiler-ecs-layout.json"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="256MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

        <!-- The logger for the Task Logger. This is a dedicated logger to have a view over the pending Tasks to be executed. -->
        <RollingFile name="task-log" fileName="logs/tasks.log" filePattern="logs/tasks-%d{yyyy-MM-dd}.log">
            <ThresholdFilter level="DEBUG"/>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss},%m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="1000KB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="server-log"/>
        </Root>

        <!-- Common loggers used in S-Filer that may have levels different than the root -->
        <Logger name="extlogger" level="INFO"/>

        <Logger name="AUDIT" level="INFO"/>

        <!-- The logger for the TransferLogging extension. It was previously defined in its own configuration file in the etc/extension folder. -->
        <Logger name="com.sfiler.extension.commons.TransferLoggingExtension" level="INFO"/>

        <!-- The logger for the Task Logger. This is a dedicated logger to have a view over the pending Tasks to be executed. -->
        <Logger name="task-log" level="DEBUG" additivity="false">
            <AppenderRef ref="task-log"/>
        </Logger>

        <!-- log4jdbc2 logger -->
        <logger name="log4jdbc.log4j2" level="OFF">
            <MarkerFilter marker="LOG4JDBC_OTHER" onMatch="DENY" onMismatch="NEUTRAL"/>
        </logger>

        <!-- other loggers -->
        <Logger name="org.apache.axis.enterprise" level="INFO"/>
        <Logger name="net.sf.jasperreports.engine.util.JRStyledTextParser" level="OFF"/>
        <logger name="liquibase.executor.jvm.JdbcExecutor" level="OFF"/>
        <Logger name="com.azure.core.util.serializer.SerializerEncoding" level="OFF"/>

    </Loggers>
</Configuration>

Références