Di Cloud Logging, objek LogEntry dapat menyimpan payload log sebagai data terstruktur atau teks tidak terstruktur. Entri log terstruktur menyimpan payload-nya sebagai objek JSON di kolom jsonPayload, sedangkan entri log tidak terstruktur menyimpan payload-nya sebagai string di kolom textPayload.
Dengan memformat payload log sebagai objek JSON, Anda dapat membuat kueri berdasarkan jalur JSON di Logs Explorer, membuat kueri setiap kolom di halaman Observability Analytics, dan mengindeks kolom tertentu untuk mempercepat kueri. Dengan log tidak terstruktur, Anda dapat menelusuri string teks, tetapi Anda tidak dapat mengkueri atau mengindeks setiap kunci.
Cara penulisan log terstruktur
Cara entri log terstruktur ditulis ke Logging bergantung pada lingkungan Anda dan cara log dikumpulkan:
- OpenTelemetry dan Telemetry (OTLP) API: Saat Anda mengirim data log OpenTelemetry Protocol (OTLP) ke Logging, Google Cloud Observability akan mengonversi data log terstruktur menjadi kolom
jsonPayload. Lihat Pemetaan data log OTLP ke entri log.
- Agen logging bawaan: Di lingkungan komputasi terkelola (seperti Google Kubernetes Engine dan Cloud Run), agen bawaan mengurai JSON satu baris yang ditulis ke
stdoutataustderrke dalam kolomjsonPayload. Lihat Memilih framework logging. - Agen Operasional: Di VM Compute Engine, agen menulis log terstruktur saat mengumpulkan log JSON atau mengurai log teks. Lihat Mengonfigurasi Agen Operasional.
- Library klien Logging: Library ini
menulis log terstruktur saat Anda meneruskan objek atau peta JSON sebagai payload, atau
saat library ini menghasilkan JSON satu baris ke
stdoutataustderr. Lihat Menulis log terstruktur.
- Google Cloud CLI atau
Logging API: Anda dapat menjalankan
gcloud logging writedengan flag--payload-type=json(contoh), atau memanggil metode APIentries.writedengan objekjsonPayload.
- BindPlane: Layanan ini mengirimkan log dengan payload JSON dari sumber lokal atau hybrid ke Logging. Lihat panduan memulai BindPlane.
Kolom JSON khusus dalam payload terstruktur
Saat agen logging menyerap log terstruktur, mereka dapat memetakan kolom tertentu dalam data log Anda ke kolom tingkat teratas di objek LogEntry, bukan membiarkannya di jsonPayload:
Agen Operasional: Untuk kolom JSON yang dipetakan Agen Operasional secara otomatis saat Anda menggunakan prosesor
parse_jsonatau penerimatcpdanfluent_forward, lihat Kolom khusus dalam payload terstruktur.OpenTelemetry (OTLP): Untuk mengetahui informasi tentang cara Google Cloud Observability memetakan data log OTLP ke kolom
LogEntry, lihat Pemetaan data log OTLP ke entri log.Agen logging bawaan (
stdoutdanstderr): Di platform komputasi terkelola seperti Google Kubernetes Engine, Cloud Run, Cloud Run Functions, dan App Engine, agen logging bawaan mengenali kunci JSON level teratas berikut dan memindahkan nilainya ke kolomLogEntryyang sesuai:severity: Menetapkan kolomLogEntry.severity.message: Menetapkan pesan log utama yang ditampilkan di Logs Explorer.httpRequest: Menetapkan kolomLogEntry.httpRequest.timeatautimestamp(atautimestampSecondsdantimestampNanos): Menetapkan kolomLogEntry.timestamp.logging.googleapis.com/insertId: Menetapkan kolomLogEntry.insertId.logging.googleapis.com/labels: Menetapkan key-value pairLogEntry.labelsyang ditentukan pengguna.logging.googleapis.com/operation: Menetapkan kolomLogEntry.operation.logging.googleapis.com/sourceLocation: Menetapkan kolomLogEntry.sourceLocation.logging.googleapis.com/trace,logging.googleapis.com/spanId, danlogging.googleapis.com/trace_sampled: Tetapkan kolomtrace,spanId, dantraceSampleduntuk menautkan log dengan trace.
Kolom yang tersisa dalam data JSON tetap berada di kolom
LogEntry.jsonPayload.
Langkah berikutnya
- Untuk memilih strategi instrumentasi bagi platform komputasi Anda, lihat Memilih pendekatan instrumentasi.
Untuk membuat kueri dan melihat entri log, lihat Melihat log menggunakan Logs Explorer.
Untuk membaca entri log menggunakan gcloud CLI, lihat Membaca entri log.
Untuk membaca entri log menggunakan Logging API, lihat metode
entries.list.