

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengkonfigurasi JSON dan format log teks biasa
<a name="monitoring-cloudwatchlogs-logformat"></a>

Menangkap output log Anda sebagai pasangan nilai kunci JSON membuatnya lebih mudah untuk mencari dan memfilter saat men-debug fungsi Anda. Dengan log berformat JSON, Anda juga dapat menambahkan tag dan informasi kontekstual ke log Anda. Ini dapat membantu Anda melakukan analisis otomatis volume besar data log. Kecuali alur kerja pengembangan Anda bergantung pada alat yang ada yang menggunakan log Lambda dalam teks biasa, kami sarankan Anda memilih JSON untuk format log Anda.

**Instans Terkelola Lambda**  
Instans Terkelola Lambda hanya mendukung format log JSON. Saat Anda membuat fungsi Instans Terkelola, Lambda secara otomatis mengonfigurasi format log ke JSON dan Anda tidak dapat mengubahnya menjadi teks biasa. Untuk informasi selengkapnya tentang Instans Terkelola, lihat[Instans Terkelola Lambda](lambda-managed-instances.md).

Untuk semua runtime terkelola Lambda, Anda dapat memilih apakah log sistem fungsi Anda dikirim ke CloudWatch Log dalam teks biasa yang tidak terstruktur atau format JSON. Log sistem adalah log yang dihasilkan Lambda dan kadang-kadang dikenal sebagai log peristiwa platform.

Untuk [runtime yang didukung](#monitoring-cloudwatchlogs-logformat-supported), saat Anda menggunakan salah satu metode logging bawaan yang didukung, Lambda juga dapat menampilkan log aplikasi fungsi Anda (log yang dihasilkan kode fungsi Anda) dalam format JSON terstruktur. Saat Anda mengonfigurasi format log fungsi Anda untuk runtime ini, konfigurasi yang Anda pilih berlaku untuk log sistem dan aplikasi.

Untuk runtime yang didukung, jika fungsi Anda menggunakan pustaka atau metode logging yang didukung, Anda tidak perlu membuat perubahan apa pun pada kode yang ada untuk Lambda untuk menangkap log di JSON terstruktur.

**catatan**  
Menggunakan pemformatan log JSON menambahkan metadata tambahan dan mengkodekan pesan log sebagai objek JSON yang berisi serangkaian pasangan nilai kunci. Karena itu, ukuran pesan log fungsi Anda dapat meningkat.

## Runtime dan metode logging yang didukung
<a name="monitoring-cloudwatchlogs-logformat-supported"></a>

 Lambda saat ini mendukung opsi untuk menampilkan log aplikasi terstruktur JSON untuk runtime berikut. 


| Bahasa | Versi yang didukung | 
| --- | --- | 
| Java | Semua runtime Java kecuali Java 8 di Amazon Linux 1 | 
| .NET | .NET 8 dan yang lebih baru | 
| Node.js | Node.js 16 dan yang lebih baru | 
| Python | Python 3.8 dan yang lebih baru | 
| Karat | T/A | 

Agar Lambda dapat mengirim log aplikasi fungsi Anda ke CloudWatch dalam format JSON terstruktur, fungsi Anda harus menggunakan alat logging bawaan berikut untuk mengeluarkan log:
+ **Java**: `LambdaLogger` Logger atau Log4j2. Untuk informasi selengkapnya, lihat [Log dan pantau fungsi Java Lambda](java-logging.md).
+ **.NET**: `ILambdaLogger` Contoh pada objek konteks. Untuk informasi selengkapnya, lihat [Log dan pantau fungsi C\$1 Lambda](csharp-logging.md).
+ **Node.js** - Metode konsol`console.trace`,`console.debug`,`console.log`,`console.info`,`console.error`, dan`console.warn`. Untuk informasi selengkapnya, lihat [Log dan pantau fungsi Node.js Lambda](nodejs-logging.md).
+ **Python: Pustaka** Python standar. `logging` Untuk informasi selengkapnya, lihat [Log dan pantau fungsi Python Lambda](python-logging.md).
+ **Karat**: `tracing` Peti. Untuk informasi selengkapnya, lihat [Log dan pantau fungsi Rust Lambda](rust-logging.md).

Untuk runtime Lambda terkelola lainnya, Lambda saat ini hanya mendukung pengambilan log sistem dalam format JSON terstruktur. Namun, Anda masih dapat menangkap log aplikasi dalam format JSON terstruktur dalam runtime apa pun dengan menggunakan alat logging seperti Powertools untuk keluaran keluaran log AWS Lambda yang diformat JSON.

## Format log default
<a name="monitoring-cloudwatchlogs-format-default"></a>

Saat ini, format log default untuk semua runtime Lambda adalah teks biasa. Untuk Instans Terkelola Lambda, format log selalu JSON dan tidak dapat diubah.

Jika Anda sudah menggunakan pustaka logging seperti Powertools AWS Lambda untuk menghasilkan log fungsi Anda dalam format terstruktur JSON, Anda tidak perlu mengubah kode Anda jika Anda memilih pemformatan log JSON. Lambda tidak menyandikan dua kali log apa pun yang sudah dikodekan JSON, sehingga log aplikasi fungsi Anda akan terus ditangkap seperti sebelumnya.

## Format JSON untuk log sistem
<a name="monitoring-cloudwatchlogs-JSON-system"></a>

Saat Anda mengonfigurasi format log fungsi Anda sebagai JSON, setiap item log sistem (peristiwa platform) ditangkap sebagai objek JSON yang berisi pasangan nilai kunci dengan kunci berikut:
+ `"time"`- waktu pesan log dihasilkan
+ `"type"`- jenis acara yang dicatat
+ `"record"`- isi dari output log

Format `"record"` nilai bervariasi sesuai dengan jenis peristiwa yang dicatat. Untuk mengetahui informasi selengkapnya, lihat [Jenis objek API `Event` telemetri](telemetry-schema-reference.md#telemetry-api-events). Untuk informasi selengkapnya tentang tingkat log yang ditetapkan ke peristiwa log sistem, lihat[Pemetaan peristiwa tingkat log sistem](monitoring-cloudwatchlogs-log-level.md#monitoring-cloudwatchlogs-log-level-mapping).

Sebagai perbandingan, dua contoh berikut menunjukkan output log yang sama dalam format teks biasa dan JSON terstruktur. Perhatikan bahwa dalam kebanyakan kasus, peristiwa log sistem berisi lebih banyak informasi saat output dalam format JSON daripada saat output dalam teks biasa.

**Example teks biasa:**  

```
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 terstruktur:**  

```
{
  "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"
  }
}
```

**catatan**  
[Mengakses data telemetri real-time untuk ekstensi menggunakan API Telemetri](telemetry-api.md)Selalu memancarkan acara platform seperti `START` dan `REPORT` dalam format JSON. Mengonfigurasi format log sistem yang dikirim Lambda tidak memengaruhi perilaku API CloudWatch Telemetri Lambda.

## Format JSON untuk log aplikasi
<a name="monitoring-cloudwatchlogs-JSON-application"></a>

Saat Anda mengonfigurasi format log fungsi Anda sebagai JSON, keluaran log aplikasi yang ditulis menggunakan pustaka dan metode logging yang didukung ditangkap sebagai objek JSON yang berisi pasangan nilai kunci dengan kunci berikut.
+ `"timestamp"`- waktu pesan log dihasilkan
+ `"level"`- tingkat log yang ditetapkan untuk pesan
+ `"message"`- isi pesan log
+ `"requestId"`(Python, .NET, dan Node.js) atau `"AWSrequestId"` (Java) - ID permintaan unik untuk pemanggilan fungsi

Bergantung pada runtime dan metode logging yang digunakan fungsi Anda, objek JSON ini mungkin juga berisi pasangan kunci tambahan. Misalnya, di Node.js, jika fungsi Anda menggunakan `console` metode untuk mencatat objek kesalahan menggunakan beberapa argumen, objek JSON akan berisi pasangan nilai kunci tambahan dengan kunci`errorMessage`,`errorType`, dan`stackTrace`. Untuk mempelajari lebih lanjut tentang log berformat JSON di runtime Lambda yang berbeda, lihat, dan. [Log dan pantau fungsi Python Lambda](python-logging.md) [Log dan pantau fungsi Node.js Lambda](nodejs-logging.md) [Log dan pantau fungsi Java Lambda](java-logging.md)

**catatan**  
Kunci yang digunakan Lambda untuk nilai stempel waktu berbeda untuk log sistem dan log aplikasi. Untuk log sistem, Lambda menggunakan kunci `"time"` untuk menjaga konsistensi dengan API Telemetri. Untuk log aplikasi, Lambda mengikuti konvensi runtime dan penggunaan yang didukung. `"timestamp"`

Sebagai perbandingan, dua contoh berikut menunjukkan output log yang sama dalam format teks biasa dan JSON terstruktur.

**Example teks biasa:**  

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

**Example JSON terstruktur:**  

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

## Mengatur format log fungsi Anda
<a name="monitoring-cloudwatchlogs-set-format"></a>

Untuk mengonfigurasi format log untuk fungsi Anda, Anda dapat menggunakan konsol Lambda atau AWS Command Line Interface ()AWS CLI. Anda juga dapat mengonfigurasi format log fungsi menggunakan perintah API [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)dan [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)Lambda, sumber daya AWS Serverless Application Model (AWS SAM), dan [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)sumber daya. CloudFormation [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)

Mengubah format log fungsi Anda tidak memengaruhi log yang ada yang disimpan di CloudWatch Log. Hanya log baru yang akan menggunakan format yang diperbarui.

Jika Anda mengubah format log fungsi Anda ke JSON dan tidak menyetel level log, maka Lambda secara otomatis menyetel level log aplikasi dan level log sistem fungsi Anda ke INFO. Ini berarti bahwa Lambda hanya mengirimkan output log dari INFO tingkat dan lebih rendah ke Log. CloudWatch Untuk mempelajari selengkapnya tentang pemfilteran tingkat log aplikasi dan sistem, lihat [Pemfilteran tingkat log](monitoring-cloudwatchlogs-log-level.md) 

**catatan**  
Untuk runtime Python, ketika format log fungsi Anda disetel ke teks biasa, pengaturan tingkat log default adalah WARN. Ini berarti bahwa Lambda hanya mengirimkan output log dari level WARN dan lebih rendah ke Log. CloudWatch Mengubah format log fungsi Anda ke JSON mengubah perilaku default ini. Untuk mempelajari lebih lanjut tentang login dengan Python, lihat. [Log dan pantau fungsi Python Lambda](python-logging.md)

Untuk fungsi Node.js yang memancarkan log format metrik tertanam (EMF), mengubah format log fungsi Anda CloudWatch menjadi JSON dapat mengakibatkan tidak dapat mengenali metrik Anda.

**penting**  
Jika fungsi Anda menggunakan Powertools for AWS Lambda (TypeScript) atau pustaka klien EMF sumber terbuka untuk memancarkan log EMF, perbarui pustaka [Powertools](https://github.com/aws-powertools/powertools-lambda-typescript) dan [EMF](https://www.npmjs.com/package/aws-embedded-metrics) Anda ke versi terbaru untuk memastikan bahwa dapat terus mengurai log Anda dengan benar. CloudWatch Jika Anda beralih ke format log JSON, kami juga menyarankan Anda melakukan pengujian untuk memastikan kompatibilitas dengan metrik tertanam fungsi Anda. Untuk saran lebih lanjut tentang fungsi node.js yang memancarkan log EMF, lihat. [Menggunakan pustaka klien format metrik tertanam (EMF) dengan log JSON terstruktur](nodejs-logging.md#nodejs-logging-advanced-emf)

**Untuk mengkonfigurasi format log fungsi (konsol)**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi

1. Pada halaman konfigurasi fungsi, pilih **Alat pemantauan dan operasi**.

1. Di panel **konfigurasi Logging**, pilih **Edit**.

1. Di bawah **Konten log**, untuk **format Log** pilih **Teks** atau **JSON**.

1. Pilih **Simpan**.

**Untuk mengubah format log dari fungsi yang ada (AWS CLI)**
+ Untuk mengubah format log dari fungsi yang ada, gunakan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah. Atur `LogFormat` opsi `LoggingConfig` ke salah satu `JSON` atau`Text`.

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

**Untuk mengatur format log saat Anda membuat fungsi (AWS CLI)**
+ Untuk mengonfigurasi format log saat Anda membuat fungsi baru, gunakan `--logging-config` opsi dalam perintah [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html). Setel `LogFormat` ke salah satu `JSON` atau`Text`. Contoh perintah berikut menciptakan fungsi Node.js yang output log di JSON terstruktur.

  Jika Anda tidak menentukan format log saat membuat fungsi, Lambda akan menggunakan format log default untuk versi runtime yang Anda pilih. Untuk informasi tentang format logging default, lihat[Format log default](#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
  ```