

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Activation de la corrélation entre suivis et journaux
<a name="Application-Signals-TraceLogCorrelation"></a>

Vous pouvez activer la *corrélation entre suivis et journaux* dans la vigie applicative. Cette fonctionnalité insère automatiquement les identifiants de suivi et d’intervalle dans les journaux concernés de l’application. Ainsi, lorsque vous ouvrez la page de détails d’un suivi dans la console de la vigie applicative, les entrées de journaux associées (le cas échéant) s’affichent automatiquement avec le suivi en cours au bas de la page.

Par exemple, supposons que vous remarquiez un pic de latence dans un graphique de latence. Vous pouvez sélectionner le point correspondant sur le graphique pour charger les informations de diagnostic associées à ce moment précis. Vous sélectionnez ensuite le suivi correspondant pour obtenir plus d’informations. Lorsque vous consultez les informations de suivi, vous pouvez faire défiler l’écran vers le bas pour voir les journaux associés au suivi. Ces journaux peuvent révéler des motifs récurrents ou des codes d’erreur associés aux problèmes ayant provoqué le pic de latence.

Pour établir la corrélation entre les suivis et les journaux, la vigie applicative s’appuie sur :
+ [Instrumentation automatique Logger MDC](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/logger-mdc-instrumentation.md) pour Java.
+ [Instrumentation de journalisation OpenTelemetry](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/logging/logging.html) pour Python.
+ Les instrumentations automatiques [Pino](https://www.npmjs.com/package/@opentelemetry/instrumentation-pino), [Winston](https://www.npmjs.com/package/@opentelemetry/instrumentation-winston) ou [Bunyan](https://www.npmjs.com/package/@opentelemetry/instrumentation-bunyan) pour Node.js.

Toutes ces instrumentations sont fournies par la communauté OpenTelemetry. La vigie applicative les utilise pour injecter les contextes de suivi, comme l’identifiant de suivi et l’identifiant d’intervalle, dans les journaux de l’application. Pour activer cette fonctionnalité, vous devez modifier manuellement la configuration de journalisation afin d’activer l’instrumentation automatique. 

Selon l’architecture sur laquelle votre application s’exécute, il peut aussi être nécessaire de définir une variable d’environnement pour activer la corrélation entre suivis et journaux, en plus de suivre les étapes décrites dans cette section.
+ Sur Amazon EKS, aucune autre étape n’est nécessaire.
+ Sur Amazon ECS, aucune autre étape n’est nécessaire.
+ Sur Amazon EC2, reportez-vous à l’étape 4 de la procédure décrite dans [Étape 3 : instrumenter votre application et la démarrer](CloudWatch-Application-Signals-Enable-EC2Main.md#CloudWatch-Application-Signals-Enable-Other-instrument).

Après avoir activé la corrélation entre suivis et journaux, 

## Exemples de configuration de la corrélation entre suivis et journaux
<a name="Application-Signals-TraceLogCorrelation-Examples"></a>

Cette section présente des exemples de configuration de la corrélation entre suivis et journaux dans différents environnements.

**Spring Boot pour Java**

Supposons que vous disposiez d’une application Spring Boot dans un dossier appelé `custom-app`. La configuration de l’application est généralement un fichier YAML appelé `custom-app/src/main/resources/application.yml`, qui pourrait ressembler à ceci : 

```
spring:
  application:
    name: custom-app
  config:
    import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/}
    
...
```

Pour activer la entre suivis et journaux, ajoutez la configuration de journalisation suivante.

```
spring:
  application:
    name: custom-app
  config:
    import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/}
    
...    

logging:
  pattern:
    level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
```

**Logback pour Java**

Dans la configuration de journalisation (par exemple logback.xml), insérez le contexte de suivi `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` dans le `pattern` de l’encodeur. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.

```
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>app.log</file>
  <append>true</append>
  <encoder> 
    <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> 
  </encoder>
</appender>
```

Pour plus d’informations sur les encodeurs dans Logback, consultez la section [Encodeurs](https://logback.qos.ch/manual/encoders.html) dans la documentation Logback.

**Log4j2 pour Java**

Dans la configuration de journalisation (par exemple log4j2.xml), insérez le contexte de suivi `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` dans `PatternLayout`. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.

```
<Appenders>
  <File name="FILE" fileName="app.log">
    <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>
  </File>
</Appenders>
```

Pour plus d’informations sur la disposition des modèles dans Log4j2, consultez [Disposition des modèles](https://logging.apache.org/log4j/2.x/manual/layouts.html#Pattern_Layout) dans la documentation Log4j2.

**Log4j pour Java**

Dans la configuration de journalisation (par exemple log4j.xml), insérez le contexte de suivi `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` dans `PatternLayout`. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.

```
<appender name="FILE" class="org.apache.log4j.FileAppender">;
  <param name="File" value="app.log"/>;
  <param name="Append" value="true"/>;
  <layout class="org.apache.log4j.PatternLayout">;
    <param name="ConversionPattern" value="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>;
  </layout>;
</appender>;
```

Pour plus d’informations sur la disposition des modèles dans Log4j, consultez [Disposition des modèles](https://logging.apache.org/log4j/1.x/apidocs/org/apache/log4j/PatternLayout.html) dans la documentation Log4j.

**Python**

Définissez la variable d’environnement `OTEL_PYTHON_LOG_CORRELATION` sur `true` lors de l’exécution de votre application. Pour plus d’informations, consultez [Activation de l’injection de contexte de suivi](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/logging/logging.html#enable-trace-context-injection) dans la documentation OpenTelemetry pour Python.

**Node.js**

Pour plus d’informations sur l’activation de l’injection de contexte de suivi dans Node.js pour les bibliothèques de journalisation compatibles, consultez la documentation NPM des instrumentations automatiques [Pino](https://www.npmjs.com/package/@opentelemetry/instrumentation-pino), [Winston](https://www.npmjs.com/package/@opentelemetry/instrumentation-winston) ou [Bunyan](https://www.npmjs.com/package/@opentelemetry/instrumentation-bunyan) pour Node.js.