

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à.

# Configurazione dei formati di log JSON e testo normale
<a name="monitoring-cloudwatchlogs-logformat"></a>

L'acquisizione degli output dei log come coppie chiave-valore JSON semplifica la ricerca e il filtraggio durante il debug delle funzioni degli eventi. Con i log in formato JSON, puoi aggiungere ai log anche tag e informazioni contestuali. Questo può aiutarti a eseguire analisi automatizzate di grandi volumi di dati di log. A meno che il flusso di lavoro di sviluppo non si basi su strumenti esistenti che utilizzano i log Lambda in testo normale, ti consigliamo di selezionare JSON come formato di log.

**Istanze Lambda gestite**  
Le istanze gestite Lambda supportano solo il formato di registro JSON. Quando crei una funzione Managed Instances, Lambda configura automaticamente il formato di registro in JSON e non è possibile modificarlo in testo semplice. Per ulteriori informazioni sulle istanze gestite, consulta. [Istanze Lambda gestite](lambda-managed-instances.md)

Per tutti i runtime gestiti da Lambda, puoi scegliere se i log di sistema della tua Event Function vengono inviati a CloudWatch Logs in testo semplice non strutturato o in formato JSON. I log di sistema sono i log generati da Lambda e a volte vengono chiamati log eventi della piattaforma.

Per i [runtime supportati](#monitoring-cloudwatchlogs-logformat-supported), quando si utilizza uno dei metodi di registrazione integrati supportati, Lambda può anche generare i log delle applicazioni di Event Function (i log generati dal codice Event Function) in formato JSON strutturato. Quando configurate il formato di registro di Event Function per questi runtime, la configurazione scelta si applica sia ai log di sistema che a quelli delle applicazioni.

Per i runtime supportati, se la tua Event Function utilizza una libreria o un metodo di registrazione supportato, non è necessario apportare modifiche al codice esistente per Lambda per acquisire i log in formato JSON strutturato.

**Nota**  
L'utilizzo della formattazione dei log JSON aggiunge metadati aggiuntivi e codifica i messaggi di log come oggetti JSON contenenti una serie di coppie chiave-valore. Per questo motivo, la dimensione dei messaggi di registro di Event Function può aumentare.

## Runtime e metodi di registrazione supportati
<a name="monitoring-cloudwatchlogs-logformat-supported"></a>

 Lambda attualmente supporta l'opzione di generare i log delle applicazioni in formato JSON strutturato per i seguenti runtime. 


| Lingua | Versioni supportate | 
| --- | --- | 
| Java | Tutti i runtime Java eccetto Java 8 su Amazon Linux 1 | 
| .NET | .NET 8 e versioni successive | 
| Node.js | Node.js 16 e versioni successive | 
| Python | Python 3.8 e versioni successive | 
| Ruby | Ruby 4.0 e versioni successive | 
| Rust | n/a | 

Affinché Lambda invii i log delle applicazioni di Event Function CloudWatch in formato JSON strutturato, la Event Function deve utilizzare i seguenti strumenti di registrazione integrati per generare i log:
+ **Java**: il logger o Log4j2. `LambdaLogger` Per ulteriori informazioni, consulta [Registra e monitora le funzioni degli eventi Java Lambda](java-logging.md).
+ **.NET**: l'`ILambdaLogger`istanza sull'oggetto contestuale. Per ulteriori informazioni, consulta [Registra e monitora le funzioni degli eventi Lambda di C\#](csharp-logging.md).
+ **Node.js**- I metodi della console `console.trace` `console.debug``console.log`,`console.info`,`console.error`, e`console.warn`. Per ulteriori informazioni, consulta [Registra e monitora le Node.js funzioni degli eventi Lambda](nodejs-logging.md).
+ **Python**: la libreria Python standard. `logging` Per ulteriori informazioni, consulta [Registra e monitora le funzioni degli eventi Python Lambda](python-logging.md).
+ **Ruby: la libreria** standard di Ruby. `Logger` Per ulteriori informazioni, consulta [Registra e monitora le funzioni degli eventi di Ruby Lambda](ruby-logging.md).
+ **Rust**: La cassa. `tracing` Per ulteriori informazioni, consulta [Registra e monitora le funzioni degli eventi Rust Lambda](rust-logging.md).

Per altri runtime Lambda gestiti, Lambda attualmente supporta nativamente solo l'acquisizione dei log di sistema in formato JSON strutturato. Tuttavia, è ancora possibile acquisire i log delle applicazioni in formato JSON strutturato in qualsiasi runtime utilizzando strumenti di registrazione come Powertools per AWS Lambda generare output di log in formato JSON.

## Formati di log predefiniti
<a name="monitoring-cloudwatchlogs-format-default"></a>

Attualmente, il formato di log predefinito per tutti i runtime Lambda è il testo normale. Per le istanze gestite Lambda, il formato di registro è sempre JSON e non può essere modificato.

Se utilizzi già librerie di registrazione come Powertools AWS Lambda per generare i registri delle funzioni degli eventi in formato strutturato JSON, non devi modificare il codice se selezioni la formattazione dei log JSON. Lambda non codifica due volte i log che sono già codificati in JSON, quindi i log delle applicazioni della tua Event Function continuano a essere acquisiti come prima.

## Formato JSON per i log di sistema
<a name="monitoring-cloudwatchlogs-JSON-system"></a>

Quando configuri il formato di registro di Event Function come JSON, ogni elemento del registro di sistema (evento della piattaforma) viene acquisito come un oggetto JSON che contiene coppie di valori chiave con le seguenti chiavi:
+ `"time"`: l'ora in cui è stato generato il messaggio di log
+ `"type"`: il tipo di evento che viene registrato
+ `"record"`: il contenuto dell'output log

Il formato del valore `"record"` varia in base al tipo di evento registrato. Per ulteriori informazioni, consulta [`Tipi di oggetti degli eventi dell'API di telemetria`](telemetry-schema-reference.md#telemetry-api-events). Per ulteriori informazioni sui livelli di log assegnati ai log eventi di sistema, consulta la pagina [Strumento di mappatura degli eventi a livello di log di sistema](monitoring-cloudwatchlogs-log-level.md#monitoring-cloudwatchlogs-log-level-mapping).

A titolo di confronto, i due esempi seguenti mostrano lo stesso output log in formato di testo normale e in formato JSON strutturato. Tieni presente che, nella maggior parte dei casi, i log eventi di sistema contengono più informazioni quando vengono emessi in formato JSON rispetto a quando vengono emessi in testo normale.

**Example testo normale:**  

```
2024-03-13 18:56:24.046000 fbe8c1   INIT_START  Runtime Version: python:3.12.v18  Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0
```

**Example JSON strutturato:**  

```
{
  "time": "2024-03-13T18:56:24.046Z",
  "type": "platform.initStart",
  "record": {
    "initializationType": "on-demand",
    "phase": "init",
    "runtimeVersion": "python:3.12.v18",
    "runtimeVersionArn": "arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0"
  }
}
```

**Nota**  
L'[Accesso ai dati di telemetria in tempo reale per le estensioni tramite l'API Telemetry](telemetry-api.md) emette sempre eventi della piattaforma come `START` e `REPORT` in formato JSON. La configurazione del formato dei log di sistema a cui Lambda invia CloudWatch non influisce sul comportamento dell'API Lambda Telemetry.

## Formato JSON per i log delle applicazioni
<a name="monitoring-cloudwatchlogs-JSON-application"></a>

Quando configurate il formato di registro di Event Function come JSON, gli output dei log delle applicazioni scritti utilizzando le librerie e i metodi di registrazione supportati vengono acquisiti come un oggetto JSON che contiene coppie chiave-valore con le seguenti chiavi.
+ `"timestamp"`: l'ora in cui è stato generato il messaggio di log
+ `"level"`: il livello di log assegnato al messaggio
+ `"message"`: il contenuto del messaggio di log
+ `"requestId"`(Python, .NET and Node.js) o `"AWSrequestId"` (Java): l'ID di richiesta univoco per l'invocazione della funzione evento

A seconda del metodo di runtime e registrazione utilizzato dalla funzione, questo oggetto JSON potrebbe contenere anche coppie di chiavi aggiuntive. Ad esempio Node.js, se la funzione utilizza `console` metodi per registrare gli oggetti di errore utilizzando più argomenti, l'oggetto JSON contiene coppie di valori chiave aggiuntive con le chiavi`errorMessage`, `errorType` e. `stackTrace` Per ulteriori informazioni sui log in formato JSON in diversi runtime Lambda, consulta [Registra e monitora le funzioni degli eventi Python Lambda](python-logging.md), [Registra e monitora le Node.js funzioni degli eventi Lambda](nodejs-logging.md) e [Registra e monitora le funzioni degli eventi Java Lambda](java-logging.md).

**Nota**  
La chiave utilizzata da Lambda per il valore del timestamp è diversa per i log di sistema e i log delle applicazioni. Per i log di sistema, Lambda utilizza la chiave `"time"` per mantenere la coerenza con l'API di telemetria. Per i log delle applicazioni, Lambda segue le convenzioni dei runtime supportati e utilizza `"timestamp"`.

A titolo di confronto, i due esempi seguenti mostrano lo stesso output log in formato di testo normale e in formato JSON strutturato.

**Example testo normale:**  

```
2024-10-27T19:17:45.586Z 79b4f56e-95b1-4643-9700-2807f4e68189 INFO some log message
```

**Example JSON strutturato:**  

```
{
    "timestamp":"2024-10-27T19:17:45.586Z",
    "level":"INFO",
    "message":"some log message",
    "requestId":"79b4f56e-95b1-4643-9700-2807f4e68189"
}
```

## Impostazione del formato di registro della funzione eventi
<a name="monitoring-cloudwatchlogs-set-format"></a>

Per configurare il formato di registro per la tua Event Function, puoi usare la console Lambda o il AWS Command Line Interface ()AWS CLI. Puoi anche configurare il formato di registro di una funzione evento utilizzando i comandi [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)e [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)Lambda API, la risorsa AWS Serverless Application Model (AWS SAM) [AWS::Serverless: :Function e la](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html) risorsa CloudFormation [AWS::Lambda:](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) :Function.

La modifica del formato di registro di Event Function non influisce sui log esistenti archiviati in Logs. CloudWatch Solo i nuovi registri utilizzano il formato aggiornato.

Se modifichi il formato di registro della funzione evento in JSON e non imposti il livello di registro, Lambda imposta automaticamente il livello di registro dell'applicazione e il livello di registro del sistema di Event Function su INFO. Ciò significa che Lambda invia solo output di log di livello INFO e inferiore a Logs. CloudWatch Per ulteriori informazioni sul filtraggio a livello di log di applicazioni e sistemi, consulta [Log-level filtraggio](monitoring-cloudwatchlogs-log-level.md) 

**Nota**  
Per i runtime di Python, quando il formato di registro della funzione evento è impostato su testo semplice, l'impostazione predefinita a livello di registro è WARN. Ciò significa che Lambda invia solo output di log di livello WARN e inferiore a Logs. CloudWatch La modifica del formato di registro di Event Function in JSON modifica questo comportamento predefinito. Per ulteriori informazioni sulla registrazione di log in Python, consulta [Registra e monitora le funzioni degli eventi Python Lambda](python-logging.md).

Per Node.js le funzioni che emettono registri in formato metrico incorporato (EMF), la modifica del formato di registro di Event Function in JSON potrebbe comportare l' CloudWatch impossibilità di riconoscere le metriche.

**Importante**  
Se la tua Event Function utilizza Powertools for AWS Lambda (TypeScript) o le librerie client EMF open source per emettere registri EMF, aggiorna le tue librerie [Powertools](https://github.com/aws-powertools/powertools-lambda-typescript) ed [EMF](https://www.npmjs.com/package/aws-embedded-metrics) alle versioni più recenti per assicurarti che possa continuare ad analizzare correttamente i tuoi log. CloudWatch Se passate al formato di registro JSON, vi consigliamo inoltre di eseguire dei test per garantire la compatibilità con le metriche incorporate di Event Function. Per ulteriori consigli sulle funzioni node.js che emettono log EMF, consulta la pagina [Utilizzo di librerie client formato del parametro incorporato (EMF) con log JSON strutturati](nodejs-logging.md#nodejs-logging-advanced-emf).

**Per configurare il formato di registro di una funzione evento (console)**

1. Apri la [pagina Event Functions](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegli una funzione di evento

1. Nella pagina di configurazione della funzione evento, scegli **Strumenti di monitoraggio e operazioni**.

1. Nel riquadro **Configurazione della registrazione**, scegli **Modifica**.

1. In **Contenuto del log**, per **Formato del log** seleziona **Testo** o **JSON**.

1. Selezionare **Salva**.

**Per modificare il formato di registro di una funzione esistente (AWS CLI)**
+ Per modificare il formato di log di una funzione esistente, utilizza il comando [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html). Imposta l'opzione `LogFormat` in `LoggingConfig` su `JSON` o `Text`.

  ```
  aws lambda update-function-configuration \
    --function-name myFunction \
    --logging-config LogFormat=JSON
  ```

**Per impostare il formato di registro quando si crea una funzione (AWS CLI)**
+ Per configurare il formato di log quando crei una nuova funzione, utilizza l'opzione `--logging-config` nel comando [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html). Impostare `LogFormat` su `JSON` o su `Text`. Il comando di esempio seguente crea una Node.js funzione che restituisce i log in formato JSON strutturato.

  Se non specifichi un formato di registro quando crei una funzione, Lambda utilizza il formato di registro predefinito per la versione di runtime selezionata. Per informazioni sui formati di registrazione predefiniti, consulta la pagina [Formati di log predefiniti](#monitoring-cloudwatchlogs-format-default).

  ```
  aws lambda create-function \ 
    --function-name myFunction \ 
    --runtime nodejs24.x \
    --handler index.handler \
    --zip-file fileb://function.zip \
    --role arn:aws:iam::123456789012:role/LambdaRole \
    --logging-config LogFormat=JSON
  ```