

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Abilitazione della correlazione tra traccia e log
<a name="Application-Signals-TraceLogCorrelation"></a>

In Application Signals è possibile abilitare la *correlazione tra traccia e log*. Questo inserisce automaticamente gli ID di traccia e gli ID di intervallo nei log delle applicazioni pertinenti. Dopodiché, quando si apre una pagina dei dettagli di traccia nella console Application Signals, le voci di log pertinenti (se presenti) correlate alla traccia corrente vengono visualizzate automaticamente nella parte inferiore della pagina.

Ad esempio, se noti un picco in un grafico di latenza, puoi selezionare il punto corrispondente sul grafico per caricare le informazioni di diagnostica relative a quel momento. Quindi puoi scegliere la traccia pertinente per ottenere maggiori informazioni. Quando visualizzi le informazioni relative alla traccia, puoi scorrere verso il basso per vedere i log associati alla traccia. Questi log potrebbero rivelare schemi o codici di errore associati ai problemi che causano il picco di latenza.

Per ottenere la correlazione tra traccia e log, Application Signals si basa su quanto segue:
+ [ Instrumentazione automatica Logger MDC](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/logger-mdc-instrumentation.md) per Java.
+ [ Instrumentazione di registrazione OpenTelemetry](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/logging/logging.html) per Python.
+ Le instrumentazioni automatiche [ Pino](https://www.npmjs.com/package/@opentelemetry/instrumentation-pino), [ Winston](https://www.npmjs.com/package/@opentelemetry/instrumentation-winston) o [ Bunyan](https://www.npmjs.com/package/@opentelemetry/instrumentation-bunyan) per Node.js.

Tutte queste instrumentazioni sono fornite dalla community OpenTelemetry. Application Signals le utilizza per inserire contesti di traccia come ID di traccia e ID di intervallo nei log delle applicazioni. Per abilitare la correlazione, è necessario modificare manualmente la configurazione di registrazione per abilitare l'instrumentazione automatica. 

A seconda dell'architettura su cui viene eseguita l'applicazione, potrebbe essere necessario impostare anche una variabile di ambiente per abilitare la correlazione tra traccia e log, oltre a seguire i passaggi descritti in questa sezione.
+ Su Amazon EKS, non sono necessari ulteriori passaggi.
+ Su Amazon ECS, non sono necessari ulteriori passaggi.
+ Su Amazon EC2, consulta il passaggio 4 della procedura riportata in [Passaggio 3: instrumentazione e avvio dell'applicazione](CloudWatch-Application-Signals-Enable-EC2Main.md#CloudWatch-Application-Signals-Enable-Other-instrument).

Dopo aver abilitato la correlazione tra traccia e log, 

## Esempi di configurazione della correlazione tra traccia e log
<a name="Application-Signals-TraceLogCorrelation-Examples"></a>

Questa sezione contiene esempi di impostazione della correlazione tra traccia e log in diversi ambienti.

**Spring Boot per Java**

Supponiamo di avere un'applicazione Spring Boot in una cartella chiamata `custom-app`. La configurazione dell'applicazione è in genere un file YAML denominato `custom-app/src/main/resources/application.yml` che potrebbe somigliare a questo: 

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

Per abilitare la correlazione tra traccia e log, aggiungi la seguente configurazione di registrazione.

```
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 per Java**

Nella configurazione di registrazione (come logback.xml), inserisci il contesto di traccia `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` nel `pattern` dell'Encoder. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.

```
<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>
```

Per ulteriori informazioni sugli encoder in Logback, consulta [ Encoders](https://logback.qos.ch/manual/encoders.html) nella documentazione di Logback.

**Log4j2 per Java**

Nella configurazione di registrazione (come log4j2.xml), inserisci il contesto di traccia `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` nel `PatternLayout`. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.

```
<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>
```

Per ulteriori informazioni sui layout degli schemi in Log4j2, consulta [ Pattern Layout](https://logging.apache.org/log4j/2.x/manual/layouts.html#Pattern_Layout) nella documentazione di Log4j2.

**Log4j per Java **

Nella configurazione di registrazione (come log4j.xml), inserisci il contesto di traccia `trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p` nel `PatternLayout`. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.

```
<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>;
```

Per ulteriori informazioni sui layout degli schemi in Log4j, consulta [ Pattern Layout](https://logging.apache.org/log4j/1.x/apidocs/org/apache/log4j/PatternLayout.html) nella documentazione di Log4j.

**Python**

Imposta la variabile di ambiente `OTEL_PYTHON_LOG_CORRELATION` su `true` durante l'esecuzione dell'applicazione. Per ulteriori informazioni, consulta [ Enable trace context injection](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/logging/logging.html#enable-trace-context-injection) nella documentazione di OpenTelemetry relativa a Python.

**Node.js**

Per ulteriori informazioni sull'abilitazione dell'inserimento del contesto di traccia in Node.js per le librerie di registrazione che lo supportano, consulta la documentazione di NPM sull'utilizzo delle instrumentazioni automatiche [ Pino](https://www.npmjs.com/package/@opentelemetry/instrumentation-pino), [ Winston](https://www.npmjs.com/package/@opentelemetry/instrumentation-winston) o [ Bunyan](https://www.npmjs.com/package/@opentelemetry/instrumentation-bunyan) per Node.js.