Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Configurer l'exportation des journaux de job

Dernière mise à jour :Sep 23, 2026

Vous pouvez consulter les journaux de job sur la page Job Insight de la console Flink, ou les exporter vers un service de stockage externe tel qu'OSS, SLS ou Kafka, et configurer le niveau de journalisation pour la sortie. Cette rubrique vous explique la marche à suivre.

Notes

  • Après avoir configuré l'exportation des journaux vers OSS, SLS ou Kafka, redémarrez le job.

  • Si vous configurez l'exportation des journaux vers un autre service de stockage sans désactiver la fonctionnalité d'archivage des journaux, ceux-ci continueront d'être enregistrés dans le stockage OSS ou entièrement géré configuré pour votre espace de travail. Si vous désactivez l'archivage des journaux, vous ne pourrez plus consulter les journaux de job dans la console Flink.

    Sur la page deployment details, dans la section log configuration, utilisez le commutateur de la ligne log archiving pour activer ou désactiver cette fonctionnalité.

  • Utilisez ${secret_values.xxxx} dans la configuration des journaux pour faire référence aux variables stockées dans la gestion des variables. Pour plus d'informations, consultez la section variables de projet.

Configurer l'exportation des journaux pour un seul job

Console

  1. Accédez à la page de configuration des journaux d'un déploiement.

    1. Connectez-vous à la console Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.

    3. Dans le volet de navigation de gauche, cliquez sur O&M > Deployments. Cliquez ensuite sur le nom du déploiement cible.

    4. Sous l'onglet Configuration , dans la section Logging , cliquez sur Edit à droite.

    5. Pour Logging Profile , sélectionnez Custom Template .

  2. Cliquez sur Apply with System Profiles > default.

  3. Cliquez sur Add Appender et sélectionnez une destination.

  4. Configurez les paramètres de l'appender sélectionné.

    Pour acheminer les journaux de différents niveaux vers différentes destinations, configurez des règles de filtrage pour l'appender. Pour plus d'informations, consultez la section Configurer le filtrage des journaux en fonction des niveaux.

    SLS

    Paramètre

    Description

    name

    Nom personnalisé pour l'appender.

    type

    Type d'appender. Cette valeur est fixée à SLS. Ne modifiez pas cette valeur.

    pattern

    Format de sortie des journaux.

    La valeur par défaut est %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n, qui génère des entrées de journal telles que 2023-10-01 14:23:45,678{GMT+8} INFO com.example.MyClass - This is a test log message.

    flushIntervalSeconds

    Intervalle, en secondes, auquel les données de journal sont vidées vers la destination.

    flushIntervalEventCount

    Nombre d'entrées de journal à regrouper avant l'écriture dans la destination de stockage.

    Remarque

    Si flushIntervalSeconds et flushIntervalEventCount sont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint, selon celui qui survient en premier.

    authenticationMode

    • AccessKey

    • Jeton SLS

      Remarque

      Si vous sélectionnez Jeton SLS, vous ne pouvez exporter les journaux que vers un Logstore dans un Project situé dans la même région que votre espace de travail Flink. Cette fonctionnalité est prise en charge uniquement à partir de VVR 11.5.

    project

    Nom du Project SLS.

    logStore

    Nom du Logstore.

    endpoint

    Endpoint privé pour la région du service SLS. Pour plus d'informations, consultez la section Endpoints.

    accessKeyId

    ID de clé d'accès (AccessKey ID) et secret de clé d'accès (AccessKey Secret) du compte utilisé pour le service SLS. Pour savoir comment obtenir une paire de clés d'accès, consultez la section Obtenir une paire de clés d'accès.

    Afin d'éviter les risques de sécurité liés à l'utilisation de clés en texte clair, nous vous recommandons de stocker les valeurs AccessKey dans des variables de namespace. Pour plus d'informations, consultez la section Variables de namespace.

    Remarque

    Si vos services SLS et Realtime Compute for Apache Flink se trouvent dans des comptes Alibaba Cloud différents, vous devez accorder au compte Flink l'autorisation d'écrire dans SLS. Pour plus de détails, consultez la section Créer une politique RAM personnalisée. Les exemples de politiques suivants sont fournis :

    Portée SLS illimitée

    {
    
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "log:Get*",
                    "log:PostLogStoreLogs"
                ],
                "Resource": "*"
            }
        ]
    }

    Portée de ressource SLS spécifique

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "log:PostLogStoreLogs",
                    "log:GetLogStore"
                ],
                "Resource": "acs:log:cn-beijing:152940222687****:project/test-vvp-sls/logstore/test-ltest"
            }
        ]
    }

    accessKeySecret

    OSS

    Les valeurs par défaut des paramètres numériques sont les suivantes : flushIntervalSeconds est 10, flushIntervalEventCount est 100 et rollingBytes est 1048576.

    Paramètre

    Description

    name

    Nom personnalisé pour l'appender.

    type

    Type d'appender. Cette valeur est fixée à OSS. Ne modifiez pas cette valeur.

    pattern

    Format de sortie des journaux.

    La valeur par défaut est %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.

    baseUri

    Nom du bucket OSS.

    endpoint

    Endpoint de la région de votre service OSS. Pour plus d'informations, consultez la section Régions et endpoints.

    Utilisez l'endpoint de la colonne Endpoint (region) correspondant à la ligne Access from ECS over the VPC (internal network).

    accessKeyId

    ID de clé d'accès (AccessKey ID) et secret de clé d'accès (AccessKey Secret) du compte utilisé pour le service OSS. Pour savoir comment obtenir une paire de clés d'accès, consultez la section Obtenir une paire de clés d'accès.

    Afin d'éviter les risques de sécurité liés à l'utilisation de clés en texte clair, nous vous recommandons de stocker les valeurs AccessKey dans des variables de namespace. Pour plus d'informations, consultez la section Variables de namespace.

    Remarque

    Ces paramètres sont requis uniquement si le bucket OSS de destination se trouve dans un compte Alibaba Cloud différent de celui de votre service Flink. S'ils se trouvent dans le même compte, supprimez ces paramètres de la configuration.

    accessKeySecret

    flushIntervalSeconds

    Intervalle, en secondes, auquel les données de journal sont vidées vers la destination.

    flushIntervalEventCount

    Nombre d'entrées de journal à regrouper avant l'écriture dans la destination de stockage.

    Remarque

    Si flushIntervalSeconds et flushIntervalEventCount sont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint, selon celui qui survient en premier.

    rollingBytes

    Taille maximale d'un fichier journal unique dans OSS. Lorsque cette taille est atteinte, les données suivantes sont écrites dans un nouveau fichier journal.

    Kafka

    Remarque

    Les clusters Kafka avec authentification Kerberos activée ne sont pas pris en charge.

    • Prérequis

      Étant donné que le plug-in KafkaAppender est chargé par le chargeur de classes de plug-in Flink, déclarez explicitement son chemin de package dans la configuration Flink. Cela permet à l'application de charger le plug-in pour le déploiement actuel.

      Sur la page Deployments , cliquez sur le nom de votre déploiement. Sous l'onglet Configuration , dans la section Parameters , ajoutez le paramètre suivant au champ Other Configuration .

      plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
    • Configuration

      Paramètre

      Description

      name

      Nom personnalisé pour l'appender.

      type

      Type d'appender. Cette valeur est fixée à KafkaVVP. Ne modifiez pas cette valeur.

      pattern

      Format de sortie des journaux.

      La valeur par défaut est %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.

      bootstrap.servers

      Adresses des brokers Kafka.

      acks

      Nombre de réplicas de partition devant recevoir un message avant que le producteur ne considère l'écriture comme réussie. Pour plus d'informations, consultez la section acks.

      buffer.memory

      Mémoire totale, en octets, que le producteur peut utiliser pour mettre en mémoire tampon les enregistrements.

      retries

      Nombre de tentatives de renvoi d'un message par le producteur après un échec transitoire.

      compression.type

      Type de compression pour les données générées par le producteur. Valeurs valides : none, gzip, snappy, lz4 et zstd.

  5. Cliquez sur Save .

  6. En haut de la page, cliquez sur Start .

Méthode XML

  1. Pour configurer la journalisation d'un déploiement, accédez à sa page de configuration des journaux.

    1. Connectez-vous à la console Realtime Compute for Apache Flink.

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console .

    3. Dans le volet de navigation de gauche, cliquez sur O&M > Deployments , puis cliquez sur le nom du déploiement cible.

    4. Sous l'onglet Configuration , dans la section Logging , cliquez sur Edit .

    5. Définissez Logging Profile sur Custom Template .

  2. Configurez la sortie des journaux.

    Selon votre destination de stockage, copiez la configuration correspondante, collez-la dans la zone de saisie et mettez à jour les paramètres avec vos informations de stockage. Pour acheminer les journaux de différents niveaux vers différentes destinations, configurez des règles de filtrage pour chaque Appender. Pour plus d'informations, consultez la section Configurer les sorties de journaux pour différents niveaux .

    OSS

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
    strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
      <Appenders> 
        <Appender name="StdOut" type="Console"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
        </Appender> 
        <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
          <Policies> 
            <SizeBasedTriggeringPolicy size="20 MB"/> 
          </Policies>  
          <DefaultRolloverStrategy max="4"/> 
        </Appender>  
        <Appender name="OSS" type="OSS">
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
          <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
          <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
          <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
          <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
          <Property name="accessKeyId">${secret_values.accessKeyId}</Property>
          <Property name="secretAccessKey">${secret_values.accessKeySecret}</Property>
          <Property name="flushIntervalSeconds">10</Property>  
          <Property name="flushIntervalEventCount">100</Property>  
          <Property name="rollingBytes">10485760</Property>  
        </Appender>
       <Appender name="StdOutErrConsoleAppender" type="Console">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
       </Appender>
       <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
         <Policies>
         <SizeBasedTriggeringPolicy size="1 GB"/>
         </Policies>
         <DefaultRolloverStrategy max="2"/>
       </Appender>
       <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
         <Policies>
         <SizeBasedTriggeringPolicy size="1 GB"/>
         </Policies>
         <DefaultRolloverStrategy max="2"/>
       </Appender>
      </Appenders>  
      <Loggers> 
        <Logger level="INFO" name="org.apache.hadoop"/>  
        <Logger level="INFO" name="org.apache.kafka"/>  
        <Logger level="INFO" name="org.apache.zookeeper"/>  
        <Logger level="INFO" name="akka"/>  
        <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
        <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
        <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
      <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
        <AppenderRef ref="StdOutFileAppender"/>
        <AppenderRef ref="StdOutErrConsoleAppender"/>
      </Logger>
      <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
        <AppenderRef ref="StdErrFileAppender"/>
        <AppenderRef ref="StdOutErrConsoleAppender"/>
      </Logger>
        {%- for name, level in userConfiguredLoggers -%} 
          <Logger level="{{ level }}" name="{{ name }}"/> 
        {%- endfor -%}
        <Root level="{{ rootLoggerLogLevel }}"> 
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>  
          <AppenderRef ref="OSS"/> 
        </Root>
      </Loggers> 
    </Configuration>

    Paramètre

    Description

    YOUR-BUCKET-NAME

    Remplacez cette valeur par le nom de votre bucket OSS.

    YOUR-ENDPOINT

    Remplacez cette valeur par votre endpoint OSS. Pour plus d'informations, consultez la section Régions et endpoints.

    Il s'agit de la valeur de la colonne Endpoint dans la ligne Access from ECS over the VPC (internal network).

    YOUR-OSS-ACCESSKEYID

    Utilisez l'ID de clé d'accès (AccessKey ID) et le secret de clé d'accès (AccessKey Secret) de votre compte OSS. Pour savoir comment les obtenir, consultez la section Obtenir une paire de clés d'accès.

    Pour éviter d'exposer les identifiants en texte clair, cet exemple utilise des variables de namespace pour spécifier les valeurs AccessKey. Pour plus d'informations, consultez la section Variables de namespace.

    Remarque

    Ces paramètres sont requis uniquement si le bucket OSS et votre service Realtime Compute for Apache Flink se trouvent dans des comptes différents. Si le bucket se trouve dans le même compte, vous pouvez omettre ces paramètres.

    YOUR-OSS-ACCESSKEYSECRET

    flushIntervalSeconds

    Intervalle, en secondes, auquel les données de journal sont écrites dans la destination de stockage.

    flushIntervalEventCount

    Nombre d'entrées de journal à mettre en mémoire tampon avant l'écriture des données dans la destination.

    Remarque

    Si flushIntervalSeconds et flushIntervalEventCount sont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint.

    rollingBytes

    Taille maximale d'un fichier journal unique dans OSS. Lorsqu'un fichier atteint cette taille, un nouveau fichier journal est créé pour les journaux suivants.

    Remarque

    Dans un job JAR, le code métier est chargé par un chargeur de classes distinct, différent de celui du système de journalisation Flink. Par défaut, le plug-in de journalisation valide strictement les chargeurs de classes (isInitStrictly est défini par défaut sur true), de sorte que ces journaux sont ignorés et ne sont pas exportés vers OSS. Pour collecter les journaux imprimés par le code métier dans un job JAR, ajoutez la configuration suivante à l'Appender OSS :

    <Property name="isInitStrictly">false</Property>

    SLS

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
    strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
      <Appenders> 
        <Appender name="StdOut" type="Console"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
        </Appender>  
        <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
          <Policies> 
            <SizeBasedTriggeringPolicy size="5 MB"/> 
          </Policies>  
          <DefaultRolloverStrategy max="1"/> 
        </Appender>  
        <Appender name="SLS" type="SLS">
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
          <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
          <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
          <Property name="project">YOUR-SLS-PROJECT</Property>  
          <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
          <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
          <Property name="accessKeyId">${secret_values.accessKeyId}</Property> 
          <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> 
          <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
          <Property name="deploymentName">{{ deploymentName }}</Property>
          <Property name="flushIntervalSeconds">10</Property>
          <Property name="flushIntervalEventCount">100</Property>
        </Appender>
       <Appender name="StdOutErrConsoleAppender" type="Console">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
       </Appender>
       <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
         <Policies>
         <SizeBasedTriggeringPolicy size="1 GB"/>
         </Policies>
         <DefaultRolloverStrategy max="2"/>
       </Appender>
       <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
         <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
         <Policies>
         <SizeBasedTriggeringPolicy size="1 GB"/>
         </Policies>
         <DefaultRolloverStrategy max="2"/>
       </Appender>
      </Appenders>  
      <Loggers> 
        <Logger level="INFO" name="org.apache.hadoop"/>  
        <Logger level="INFO" name="org.apache.kafka"/>  
        <Logger level="INFO" name="org.apache.zookeeper"/>  
        <Logger level="INFO" name="akka"/>  
        <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
        <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
        <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
      <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
        <AppenderRef ref="StdOutFileAppender"/>
        <AppenderRef ref="StdOutErrConsoleAppender"/>
      </Logger>
      <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
        <AppenderRef ref="StdErrFileAppender"/>
        <AppenderRef ref="StdOutErrConsoleAppender"/>
      </Logger>
        {%- for name, level in userConfiguredLoggers -%} 
          <Logger level="{{ level }}" name="{{ name }}"/> 
        {%- endfor -%}
        <Root level="{{ rootLoggerLogLevel }}"> 
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>  
          <AppenderRef ref="SLS"/> 
        </Root>
      </Loggers> 
    </Configuration>
    Remarque

    Les propriétés namespace , deploymentId , jobId et deploymentName dans le code sont des variables Twig. Ne les modifiez pas. Sinon, le démarrage du job échouera.

    Paramètre

    Description

    YOUR-SLS-PROJECT

    Remplacez cette valeur par le nom de votre Project SLS.

    YOUR-SLS-LOGSTORE

    Remplacez cette valeur par le nom de votre Logstore SLS.

    YOUR-SLS-ENDPOINT

    Remplacez cette valeur par l'endpoint privé de la région de votre service SLS. Pour plus d'informations, consultez la section Endpoints de service.

    YOUR-SLS-ACCESSKEYID

    Utilisez l'ID de clé d'accès (AccessKey ID) et le secret de clé d'accès (AccessKey Secret) de votre compte SLS. Pour savoir comment les obtenir, consultez la section Obtenir une paire de clés d'accès.

    Pour éviter d'exposer les identifiants en texte clair, cet exemple utilise des variables de namespace pour spécifier les valeurs AccessKey. Pour plus d'informations, consultez la section Variables de namespace.

    Remarque

    Si vos services SLS et Realtime Compute for Apache Flink se trouvent dans des comptes différents, vous devez accorder au compte Flink des autorisations d'écriture dans SLS. Pour plus d'informations, consultez la section Créer une politique RAM personnalisée. Utilisez l'une des politiques suivantes :

    • Portée SLS illimitée

      {
      
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:Get*",
                      "log:PostLogStoreLogs"
                  ],
                  "Resource": "*"
              }
          ]
      }
    • Limité à une ressource SLS spécifique. Exemple :

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:PostLogStoreLogs",
                      "log:GetLogStore"
                  ],
                  "Resource": "acs:log:cn-beijing:152940222687****:project/test-vvp-sls/logstore/test-ltest"
              }
          ]
      }

    YOUR-SLS-ACCESSKEYSECRET

    flushIntervalSeconds

    Intervalle, en secondes, auquel les données de journal sont écrites dans la destination de stockage.

    flushIntervalEventCount

    Nombre d'entrées de journal à mettre en mémoire tampon avant l'écriture des données dans la destination.

    Remarque

    Si flushIntervalSeconds et flushIntervalEventCount sont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint.

    Remarque

    Dans un job JAR, le code métier est chargé par un chargeur de classes distinct, différent de celui du système de journalisation Flink. Par défaut, le plug-in de journalisation valide strictement les chargeurs de classes (isInitStrictly est défini par défaut sur true), de sorte que ces journaux sont ignorés et ne sont pas exportés vers SLS. Pour collecter les journaux imprimés par le code métier dans un job JAR, ajoutez la configuration suivante à l'Appender SLS :

    <Property name="isInitStrictly">false</Property>

    Kafka

    Remarque

    L'authentification Kerberos pour les clusters Kafka n'est actuellement pas prise en charge.

    • Prérequis

      Realtime Compute for Apache Flink fournit un plug-in de journalisation KafkaAppender. Étant donné que Flink charge ce plug-in à l'aide d'un chargeur de classes de plug-in, spécifiez explicitement son chemin de package afin que votre application puisse le charger correctement. Vous pouvez procéder de l'une des manières suivantes :

      • Configurer un modèle de job (affecte tous les déploiements de cet espace de travail)

        Sur la page Configurations de la console, ajoutez le code suivant au champ other configuration .

        plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
      • Configurer un seul déploiement (affecte uniquement le déploiement actuel)

        Sur la page Deployments , cliquez sur le nom du déploiement cible. Sous l'onglet Configuration , dans la section Parameters , ajoutez le code suivant au champ other configuration .

        plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
    • Configuration de la journalisation

      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
      strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
        <Appenders> 
          <Appender name="StdOut" type="Console"> 
            <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> 
          </Appender>  
          <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
            <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
            <Policies> 
              <SizeBasedTriggeringPolicy size="20 MB"/> 
            </Policies>  
            <DefaultRolloverStrategy max="4"/> 
          </Appender>  
          <Appender type="KafkaVVP" name="KafkaVVPAppender" topic="YOUR-TOPIC-NAME">
              <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n"/>
              <Property name="bootstrap.servers">YOUR-KAFKA-BOOTSTRAP-SERVERS</Property>
               <Property name="acks">YOUR-ACKS-VALUE</Property>
               <Property name="buffer.memory">YOUR-BUFFER-MEMORY-SIZE</Property>
                <Property name="retries">YOUR-RETRIES-NUMBER</Property>
               <Property name="compression.type">YOUR-COMPRESSION-TYPE</Property>
          </Appender>
          <Appender type="Async" name="AsyncAppender">
              <AppenderRef ref="KafkaVVPAppender"/>
          </Appender>
        </Appenders>
        <Loggers> 
          <Logger level="INFO" name="org.apache.hadoop"/>  
          <Logger level="INFO" name="org.apache.kafka"/>  
          <Logger level="INFO" name="org.apache.zookeeper"/>  
          <Logger level="INFO" name="akka"/>  
          <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
          <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
          {%- for name, level in userConfiguredLoggers -%} 
            <Logger level="{{ level }}" name="{{ name }}"/> 
          {%- endfor -%}
          <Root level="{{ rootLoggerLogLevel }}"> 
            <AppenderRef ref="StdOut"/>
            <AppenderRef ref="RollingFile"/>  
            <AppenderRef ref="AsyncAppender"/> 
          </Root>
        </Loggers>
      </Configuration>

      Paramètre

      Description

      YOUR-TOPIC-NAME

      Nom du topic Kafka de destination.

      YOUR-KAFKA-BOOTSTRAP-SERVERS

      Adresses des brokers Kafka de destination.

      YOUR-ACKS-VALUE

      Nombre de réplicas de partition devant acquitter un message avant que le producteur ne considère l'écriture comme réussie. Pour plus d'informations, consultez la section acks .

      YOUR-BUFFER-MEMORY-SIZE

      Taille du tampon du producteur, en octets.

      YOUR-RETRIES-NUMBER

      Nombre de tentatives après un échec d'envoi.

      YOUR-COMPRESSION-TYPE

      Type de compression utilisé par le producteur pour les messages. Les valeurs valides incluent none, gzip, snappy, lz4 et zstd.

  3. Cliquez sur Save .

  4. Cliquez sur Start en haut de la page.

Configurer l'exportation des journaux pour un namespace

Utilisez un modèle pour configurer la destination d'exportation des journaux par défaut vers OSS, SLS ou Kafka pour tous les jobs d'un namespace.

Important
  • Une fois ce modèle configuré, les journaux de tous les nouveaux jobs de ce namespace sont exportés vers OSS, SLS ou Kafka.

  • Le chargeur de classes de plug-in Flink charge le plug-in de journalisation KafkaAppender fourni par Realtime Compute for Apache Flink. Avant de pouvoir utiliser ce plug-in, spécifiez son chemin de classe pour permettre à votre application Flink de le charger. Pour ce faire, dans la console de développement Realtime Compute for Apache Flink, accédez à la page Configurations et ajoutez le code suivant à la section Other Configuration .

    plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
  1. Accédez à la page de configuration du modèle de journal de job.

    1. Connectez-vous à la console Realtime Compute for Apache Flink .

    2. Dans la colonne Actions de l'espace de travail cible, cliquez sur Console . Dans la console de développement Realtime Compute for Apache Flink , sélectionnez le namespace cible en haut de la page.

    3. Dans le volet de navigation de gauche, cliquez sur O&M > Configurations .

    4. Sous l'onglet Deployment Defaults , sélectionnez un type de job.

    5. Dans la section Logging , définissez Logging Profile sur Custom Template .

  2. Configurez la destination d'exportation des journaux pour tous les jobs du namespace.

    Pour le code requis, consultez la section Configurer l'exportation des journaux pour un seul job (XML) .

  3. Cliquez sur save changes .

Configurer les sorties de journaux par niveau

Utilisez le ThresholdFilter de Log4j2 pour configurer différentes règles de filtrage pour chaque appender en fonction du niveau de journalisation. Cette configuration offre plusieurs avantages :

  • Flexibilité : vous pouvez définir différents niveaux de journalisation pour différentes destinations de stockage externes.

  • Efficacité : réduit le traitement et le transfert inutiles des journaux, améliorant ainsi les performances du système.

  • Clarté : des configurations séparées clarifient le flux des journaux et simplifient la gestion des niveaux.

Procédez comme suit :

  1. Dans la section logging , définissez Logging Profile sur Custom Template .

  2. Configurez la sortie des journaux.

    L'exemple suivant montre comment configurer le système pour envoyer les journaux de niveau INFO et supérieurs à la console de développement Realtime Compute for Apache Flink, tout en envoyant uniquement les journaux de niveau ERROR et supérieurs à Simple Log Service (SLS).

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" strict="true" status="WARN">
      <Appenders>
        <!-- Console Appender configured to output logs of INFO level and higher -->
        <Appender name="StdOut" type="Console">
          <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
          <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" charset="UTF-8"/>
        </Appender>
        <!-- RollingFile Appender logs messages at the root logger's level (INFO) and higher -->
        <Appender name="RollingFile" type="RollingFile">
          <!-- Configuration remains unchanged -->
          <!-- ... -->
        </Appender>
        <!-- SLS Appender configured to output only ERROR level and above logs -->
        <Appender name="SLS" type="SLS">
          <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
          <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" charset="UTF-8"/>
          <!-- SLS specific properties -->
          <Property name="namespace">YOUR_NAMESPACE</Property>
          <Property name="project">YOUR_SLS_PROJECT</Property>
          <Property name="logStore">YOUR_SLS_LOGSTORE</Property>
          <Property name="endpoint">YOUR_SLS_ENDPOINT</Property>
          <!-- Access credentials and other properties -->
          <!-- ... -->
        </Appender>
        <!-- Other Appenders definitions remain unchanged -->
        <!-- ... -->
      </Appenders>
      <Loggers>
        <!-- Define specific loggers that use the StdOut and SLS appenders -->
        <Logger name="StdOutLogger" level="INFO" additivity="false">
          <AppenderRef ref="StdOut"/>
        </Logger>
        <Logger name="SLSLogger" level="ERROR" additivity="false">
          <AppenderRef ref="SLS"/>
        </Logger>
        <!-- Other Loggers definitions with their specific configurations -->
        <!-- ... -->
        <!-- The Root logger sends output to StdOut and RollingFile, but not SLS, to avoid duplicate logs. -->
        <Root level="INFO">
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>
          <!-- Exclude SLS from Root to prevent duplicate logging in case of other loggers -->
        </Root>
      </Loggers>
    </Configuration>

    Dans cette configuration :

    • Console Appender : utilise un ThresholdFilter pour garantir que les journaux de niveau INFO ou supérieur sont exportés vers la console de développement.

    • L'Appender SLS utilise un ThresholdFilter pour envoyer uniquement les journaux de niveau ERROR et supérieur à SLS. Pour plus de détails sur les propriétés de l'Appender SLS, consultez la section Configurer la sortie vers SLS . Remplacez les espaces réservés tels que YOUR_NAMESPACE et YOUR_SLS_PROJECT par vos informations de projet SLS réelles.

      Remarque

      Si le type d'Appender SLS n'est pas SLS mais un appender personnalisé, assurez-vous d'utiliser le type correct et que la classe de l'appender dispose de la logique requise pour se connecter à SLS.

    • StdOutLogger et SLSLogger : ils envoient des journaux uniquement vers l'Appender StdOut et l'Appender SLS respectivement, et chacun possède ses propres restrictions de niveau de journalisation.

    • Root Logger : ce logger est configuré avec un Appender StdOut et un Appender RollingFile, mais n'inclut pas d'Appender SLS. Cela permet d'éviter d'envoyer des journaux en double à SLS si un logger spécifique est déjà configuré pour le faire.

    Pour plus d'informations sur les paramètres de configuration Log4j, consultez la documentation Apache Log4j .

Rubriques connexes