Tous les produits
Search
Centre de documentation

Simple Log Service:,

Dernière mise à jour :Aug 26, 2026

Utilisez un appender Log4j2 ou Logtail pour collecter les journaux d'application Java enregistrés par Log4j2 et les envoyer à Simple Log Service afin de les interroger et de les analyser.

Présentation de Log4j

Log4j est un projet open source Apache qui vous permet de configurer des destinations de journalisation telles que les consoles, les fichiers, les composants graphiques, les serveurs socket, les enregistreurs d'événements NT et les démons Syslog UNIX. Vous pouvez contrôler le format de sortie de chaque entrée de journal et affiner la génération des journaux en définissant des niveaux de journalisation, le tout via un fichier de configuration sans modifier le code de l'application. Log4j se compose de trois composants :

  • layouts

    Les layouts formatent les messages de journal. Les layouts courants incluent :

    Layout

    Description

    HTMLLayout

    Formate les journaux sous forme de tableaux HTML.

    SimpleLayout

    Utilise un format de sortie simple, tel que le format par défaut pour les messages de niveau INFO.

    PatternLayout

    Affiche les journaux dans un format personnalisé. Vous pouvez spécifier l'ordre et le format des éléments tels que l'horodatage, le niveau de journalisation, le nom du thread, le nom de la classe, le nom de la méthode et le message de journal.

  • appenders

    Les appenders définissent les destinations de sortie des journaux. Les appenders courants incluent :

    Appender

    Description

    ConsoleAppender

    Affiche les journaux dans la console.

    FileAppender

    Affiche les journaux dans un fichier.

    DailyRollingFileAppender

    Affiche les journaux dans un fichier et crée un nouveau fichier de journal chaque jour.

    RollingFileAppender

    Affiche les messages de journal dans un fichier jusqu'à une taille spécifiée. Lorsque le fichier atteint la limite de taille, il est renommé et un nouveau fichier est créé.

    JDBCAppender

    Enregistre les messages de journal dans une base de données.

  • loggers

    Un logger capture les messages de journal et sert de point d'entrée pour la journalisation. Chaque logger reçoit un niveau de journalisation basé sur son importance ou sa gravité. Log4j définit huit niveaux de journalisation par ordre de priorité décroissante : OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE et ALL. Les loggers enfants héritent des niveaux de journalisation de leurs parents. Le tableau suivant décrit les niveaux de journalisation.

    Niveau de journalisation

    Description

    OFF

    Désactive toute journalisation.

    FATAL

    Indique un événement d'erreur grave qui entraînera l'arrêt de l'application.

    ERROR

    Indique un événement d'erreur qui pourrait encore permettre au système de continuer à fonctionner.

    WARN

    Indique une situation potentiellement dangereuse.

    INFO

    Met en évidence la progression de l'application à un niveau grossier.

    DEBUG

    Fournit des informations détaillées utiles pour le débogage des applications.

    TRACE

    Trace l'exécution du programme, affiche les variables et montre le flux d'exécution.

    ALL

    Affiche tous les enregistrements de journal.

Remarque

Un logger peut être associé à plusieurs appenders, mais un appender ne peut être associé qu'à un seul layout.

Prérequis

Procédure

Remarque

Les exemples de cette rubrique utilisent Java et Log4j2. Vous pouvez également utiliser Log4j pour des programmes dans d'autres langages, tels que C, C++, .NET et PL/SQL. La syntaxe et l'utilisation sont identiques à celles de Java.

Étape 1 : Ajouter le fichier de configuration Log4j2

  1. Ajoutez les dépendances à votre projet Maven.

    <dependencies>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.23.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.23.1</version>
      </dependency>
    </dependencies>
  2. Modifiez le fichier de configuration.

    Par défaut, Log4j2 recherche le fichier de configuration dans le classpath. Si le fichier n'existe pas, créez-le manuellement. L'exemple suivant utilise log4j2.xml. Deux appenders sont définis pour afficher les journaux respectivement dans la console et dans le fichier app.log. Le niveau du logger racine est défini sur error avec une sortie vers la console. Le logger nommé com.example.demo.log est défini sur warn avec une sortie vers le fichier. Pour plus d'informations sur la configuration de Log4j2, consultez la documentation officielle à l'adresse Log4j – Configuring Log4j 2 (apache.org)

    <!-- status="WARN" sets the internal status of Log4j 2 itself, not the application's logging. It is used to capture and report potential issues during the configuration process. -->
    <Configuration status="WARN">
        <!-- Start: Define two appenders for log output -->
        <Appenders>
            <!-- Defines a console appender named "Console". Logs are printed to the standard system output. -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <!-- Defines a file appender named "MyFile". Logs are written to the "app.log" file. -->
            <File name="MyFile" fileName="app.log">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </File>
        </Appenders>
        <!-- End: Define two appenders for log output -->
        <!-- Start: Configure logger behavior -->
        <Loggers>
            <!-- Defines a logger named "com.example.demo.log" and sets its level to warn. It references the "MyFile" appender, which means logs at the warn level and above from this logger are sent to "MyFile". -->
            <Logger name="com.example.demo.log" level="warn">
                <AppenderRef ref="MyFile" />
            </Logger>
            <!-- Defines the root logger and sets its level to error. It references the "Console" appender, which means logs at the error level and above are sent to the console. -->
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
        <!-- End: Configure logger behavior -->
    </Configuration>
  3. Utilisez le logger.

    Écrivez un code de test pour obtenir une instance de logger et générer des journaux :

        public void logExampleDemo() {
            // Get the logger instance named "com.example.demo.log".
            Logger logger = LogManager.getLogger("com.example.demo.log");
            // Record log messages at different levels.
            logger.trace("trace level");
            logger.debug("debug level");
            logger.info("info level");
            logger.warn("warn level");
            logger.error("error level");
            logger.fatal("fatal level");
        }
  4. Exemple de sortie de journal :

    2024-05-28 13:37:16:295 CST [http-nio-8080-exec-8] TRACE com.example.demo.log - trace level
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] DEBUG com.example.demo.log - debug level
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] INFO  com.example.demo.log - info level
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] WARN  com.example.demo.log - warn level
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] ERROR com.example.demo.log - error level
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] FATAL com.example.demo.log - fatal level

Étape 2 : Collecter les journaux Log4j

Remarque
  • L'appender Log4j2 est une méthode de collecte intégrée. Pour les applications déjà intégrées à Log4j2, une configuration minimale est nécessaire pour envoyer les journaux en temps réel sans les écrire sur le disque d'un serveur. Cette méthode convient aux applications Big Data qui nécessitent un traitement en temps réel de grands volumes de données de journalisation.

  • Pour collecter les journaux à l'aide de Logtail, installez l'agent Logtail sur votre serveur. L'agent Logtail prend en charge divers plug-ins de traitement.

Via Log4j2 appender

image
  1. Ajoutez les dépendances à votre projet Maven.

    <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>2.5.0</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-log-log4j2-appender</artifactId>
        <version>0.1.12</version>
    </dependency>
  2. Modifiez le fichier de configuration.

    L'exemple suivant utilise le fichier de configuration XML log4j2.xml. Si le fichier n'existe pas, créez-le dans le répertoire racine du projet. Configurez l'appender Loghub et le logger comme suit :

    <Appenders>
        <Loghub name="Loghub"
                project="your project"
                logStore="your logStore"
                endpoint="your project endpoint"
                accessKeyId="your accessKey id"
                accessKeySecret="your accessKey secret"
                totalSizeInBytes="104857600"
                maxBlockMs="0"
                ioThreadCount="8"
                batchSizeThresholdInBytes="524288"
                batchCountThreshold="4096"
                lingerMs="2000"
                retries="10"
                baseRetryBackoffMs="100"
                maxRetryBackoffMs="100"
                topic="your topic"
                source="your source"
                timeFormat="yyyy-MM-dd'T'HH:mmZ"
                timeZone="UTC"
                ignoreExceptions="true">
            <PatternLayout pattern="%d %-5level [%thread] %logger{0}: %msg"/>
        </Loghub>
    </Appenders>
    <Loggers>
        <Root level="warn">
            <AppenderRef ref="Loghub"/>
        </Root>
    </Loggers>

    Les paramètres project, Logstore, endpoint, accessKeyId et accessKeySecret sont obligatoires. Les paramètres facultatifs utilisent des valeurs par défaut s'ils ne sont pas spécifiés. Le tableau suivant décrit les paramètres.

    Paramètre

    Description

    project

    Le nom de votre Project dans Simple Log Service.

    Logstore

    Le nom de votre Logstore dans Simple Log Service.

    endpoint

    L'endpoint public pour Simple Log Service. Pour plus d'informations, consultez Endpoint de service.

    accessKeyId

    L'AccessKey ID. Pour plus d'informations, consultez Créer un AccessKey.

    accessKeySecret

    Le secret AccessKey. Pour plus d'informations, consultez Créer un AccessKey.

  3. Exemple de code de test :

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    public class Log4j2AppenderExample {
        private static final Logger LOGGER = LogManager.getLogger(Log4j2AppenderExample.class);
        public static void main(String[] args) throws InterruptedException {
            LOGGER.trace("log4j2 trace log");
            LOGGER.debug("log4j2 debug log");
            LOGGER.info("log4j2 info log");
            LOGGER.warn("log4j2 warn log");
            LOGGER.error("log4j2 error log", new RuntimeException("Runtime Exception"));
            Thread.sleep(1000 * 5);
        }
    }

Via Logtail

image
Important

Lorsque vous configurez Logtail, vous devez spécifier le chemin du fichier. Assurez-vous que les journaux d'application peuvent être écrits dans les fichiers de journalisation.

Simple Log Service fournit un assistant de configuration pour la collecte rapide de journaux texte à l'aide de Logtail. Si votre instance ECS et votre Project Simple Log Service relèvent du même compte et se trouvent dans la même région, consultez Collecter des journaux texte depuis des serveurs. Sinon, consultez Installer manuellement Logtail pour collecter des journaux texte depuis des serveurs.

Étape 3 : Consulter les journaux

  1. Connectez-vous à la console Simple Log Service.

  2. Dans la section Projects, cliquez sur celui que vous souhaitez utiliser.

    image

  3. Dans l'onglet Log Storage > Logstores, cliquez sur le logstore souhaité.

    image

  4. Vérifiez que les données de journal sont téléchargées. Dans le Logstore, cliquez sur Consumption Preview pour afficher rapidement les journaux. Pour plus d'informations, consultez Démarrage rapide de l'interrogation et de l'analyse.

  5. Interrogez et analysez les journaux.

    Important

    Une fois les journaux téléchargés dans un Logstore, vous devez créer un index avant de pouvoir les interroger et les analyser. Pour plus d'informations sur la configuration des index, consultez Créer des index.

    Saisissez une instruction de requête, puis cliquez sur Last 15 Minutes pour spécifier une plage de temps. Voici un exemple de journal :

    level: ERROR
    location: com.aliyun.openservices.log.log4j.example.Log4jAppenderExample.main(Log4jAppenderExample.java:16)
    message: error log
    throwable: java.lang.RuntimeException: xxx
    thread: main
    time: 2018-01-02T03:15+0000
    log: 0 [main] ERROR com.aliyun.openservices.log.log4j.example.Log4jAppenderExample - error log
    __source__: xxx
    __topic__: yyy

    Interrogez et analysez les journaux sur la page Logstore.

    Saisissez une instruction de requête pour afficher, rechercher et filtrer les données de journalisation. Pour plus d'informations, consultez Interroger et analyser les journaux. Exemples :

    • Interrogez les trois emplacements présentant le plus d'erreurs au cours de la dernière heure.

      level: ERROR | select location ,count(*) as count GROUP BY  location  ORDER BY count DESC LIMIT 3
    • Comptez le nombre de journaux pour chaque niveau de journalisation au cours des 15 dernières minutes.

      | select level ,count(*) as count GROUP BY level ORDER BY count DESC

Dépannage

Si la collecte des journaux échoue après avoir configuré l'appender Log4j2, vérifiez les causes courantes suivantes.

1. Sélection des dépendances

Spring Boot utilise Logback par défaut. Si votre application utilise Spring Boot, ajoutez la dépendance aliyun-log-logback-appender au lieu de l'appender Log4j2. Si votre application utilise Log4j2, utilisez la dépendance aliyun-log-log4j2-appender.

2. Configuration de l'endpoint

Assurez-vous d'avoir configuré le bon endpoint public, tel que cn-hangzhou.log.aliyuncs.com.

3. Autorisations AccessKey ID et AccessKey secret

Assurez-vous que l'utilisateur Resource Access Management (RAM) dispose de l'autorisation AliyunLogFullAccess ou des autorisations d'écriture sur le LogStore cible.

4. Noms Project et LogStore

Assurez-vous que les noms Project et LogStore dans votre configuration correspondent aux noms affichés dans la console Simple Log Service.

Documentation connexe