Menulis dan melihat log

Halaman ini menjelaskan log yang tersedia untuk aplikasi App Engine, dan cara menulis, menghubungkan, dan melihat entri log.

App Engine mengumpulkan dua jenis log:

  • Log permintaan: Log permintaan yang dikirim ke aplikasi Anda. Secara default, App Engine otomatis memunculkan entri log untuk setiap permintaan HTTP yang diterima aplikasi.

  • Log aplikasi: Entri log yang dikeluarkan oleh aplikasi App Engine berdasarkan entri log yang Anda tulis ke framework atau file yang didukung.

App Engine secara otomatis mengirimkan log permintaan dan log aplikasi ke agen Cloud Logging.

Menulis log aplikasi

App Engine otomatis memunculkan log untuk permintaan yang dikirim ke aplikasi Anda, sehingga Anda tidak perlu menulis log permintaan. Bagian ini membahas cara menulis log aplikasi.

Saat Anda menulis log aplikasi dari aplikasi App Engine, log tersebut diambil secara otomatis oleh Cloud Logging, selama log tersebut ditulis menggunakan metode berikut:

Berintegrasi dengan Cloud Logging

Sebaiknya integrasikan aplikasi App Engine Anda dengan Cloud Logging. Pendekatan ini memungkinkan Anda menggunakan semua fitur yang ditawarkan oleh Cloud Logging dan hanya memerlukan beberapa baris kode khusus Google.

Menulis log terstruktur ke stdout dan stderr

Jika tidak dapat menggunakan library klien Cloud Logging secara langsung, Anda dapat mengirim string teks ke stdout dan stderr. Secara default, payload log adalah string teks sederhana yang disimpan di kolom textPayload entri log. String tersebut muncul sebagai pesan di Logs Explorer, command line, dan Cloud Logging API, serta dikaitkan dengan layanan dan versi App Engine yang memunculkannya.

Untuk mendapatkan lebih banyak nilai dari log, Anda dapat memfilter string ini di Logs Explorer berdasarkan tingkat keparahannya. Untuk memfilter string ini, Anda perlu memformat string tersebut sebagai data terstruktur. Untuk melakukannya, tulis log dalam bentuk satu baris JSON serial. App Engine mengambil dan mengurai baris JSON yang diserialisasi ini, dan menempatkannya ke kolom jsonPayload entri log, bukan textPayload.

Log stdout dan stderr dari lingkungan fleksibel dikirim ke Cloud Logging menggunakan agen logging lama yang berjalan di instance virtual machine. Agen logging berjalan dengan resource terbatas dan log yang ditulis dirotasi setelah melebihi batas 10 MB. Jika tingkat log yang ditulis ke stdout dan stderr lebih besar dari kecepatan log yang dibaca oleh agen logging, log dapat dirotasi sebelum log dikirim ke Cloud Logging. Jika Anda tidak ingin kehilangan log, gunakan Cloud Logging.

Kolom JSON khusus dalam pesan

Apabila Anda menyediakan log yang terstruktur sebagai kamus JSON, beberapa kolom khusus akan dihapus dari jsonPayload dan ditulis ke kolom yang sesuai dalam LogEntry yang dibuat. Hal ini sebagaimana dijelaskan dalam dokumentasi untuk kolom khusus.

Misalnya, jika JSON Anda menyertakan properti severity, maka JSON tersebut akan dihapus dari jsonPayload dan muncul sebagai entri log milik severity. Properti message digunakan sebagai teks tampilan utama entri log jika ada.

Menggabungkan log permintaan dengan log aplikasi

Setelah memformat entri sebagai objek JSON dan menyediakan metadata spesifik, Anda dapat mengaktifkan pemfilteran dan korelasi dengan log permintaan. Untuk menghubungkan entri log permintaan dengan entri log aplikasi, Anda memerlukan ID rekaman aktivitas permintaan. Ikuti petunjuk untuk menghubungkan pesan log:

  1. Ekstrak ID rekaman aktivitas dari header permintaan X-Cloud-Trace-Context.
  2. Dalam entri log terstruktur Anda, tulis ID ke kolom bernama logging.googleapis.com/trace. Untuk mengetahui informasi selengkapnya tentang header X-Cloud-Trace-Context, lihat Memaksa permintaan agar dilacak.

Untuk melihat log yang terkorelasi, baca bagian Melihat entri log yang terkorelasi di Logs Explorer.

Lihat log

Anda dapat melihat log aplikasi dan log permintaan dalam beberapa cara:

Menggunakan Logs Explorer

Anda dapat melihat log aplikasi dan permintaan menggunakan Logs Explorer:

  1. Buka Logs Explorer di konsol Google Cloud:

    Buka Logs Explorer

  2. Pilih project Google Cloud yang ada di bagian atas halaman.

  3. Di Resource Type, pilih GAE Application.

Anda dapat memfilter Logs Explorer berdasarkan layanan, versi, dan kriteria lainnya untuk Log Explorer. Anda juga dapat menelusuri log untuk menemukan entri tertentu. Lihat Menggunakan Logs Explorer untuk mengetahui detailnya.

Jika Anda mengirim entri teks sederhana ke output standar, Anda tidak dapat menggunakan Logs Viewer untuk memfilter entri aplikasi menurut tingkat keparahan. Anda juga tidak dapat melihat log aplikasi mana yang sesuai dengan permintaan tertentu. Anda masih dapat menggunakan jenis pemfilteran lain di Logs Explorer, seperti teks dan stempel waktu.

Melihat entri log yang terkait di Logs Explorer

Di Logs Explorer, untuk melihat entri log turunan yang terkait dengan entri log induk, luaskan entri log tersebut.

Misalnya, untuk menampilkan entri log permintaan App Engine dan entri log aplikasi, lakukan hal berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

    Buka Logs Explorer

  2. Di Resource Type, pilih GAE Application.

  3. Untuk melihat dan menghubungkan log permintaan, di Log Name, pilih request_log. Atau, untuk menghubungkan menurut log permintaan, klik Correlate by, lalu pilih request_log.

    Menghubungkan log

  4. Di panel Query results, untuk meluaskan entri log, klik Expand. Saat meluaskan, setiap log permintaan akan menampilkan log aplikasi terkait.

Setelah membuat filter untuk log, setiap log permintaan akan menampilkan log aplikasi yang sesuai sebagai log turunan. Logs Explorer mencapai hal ini dengan menghubungkan kolom trace di log aplikasi dan log permintaan tertentu, dengan asumsi aplikasi menggunakan library google-cloud-logging.

Gambar berikut menunjukkan log aplikasi yang dikelompokkan menurut kolom trace:

Entri log aplikasi disusun bertingkat di entri log permintaan.

Menggunakan Google Cloud CLI

Untuk melihat log App Engine dari command line, gunakan perintah berikut:

gcloud app logs tail

Untuk mengetahui informasi selengkapnya, lihat tail log aplikasi gcloud.

Membaca log secara terprogram

Jika ingin membaca log secara terprogram, Anda dapat menggunakan salah satu metode berikut:

Kebijakan harga, kuota, dan retensi log

Untuk mengetahui informasi tentang harga yang berlaku untuk log permintaan dan aplikasi, lihat Harga untuk Cloud Logging.

Untuk mengetahui kebijakan retensi log dan ukuran maksimum entri log, baca Kuota dan batas. Jika ingin menyimpan log untuk jangka waktu yang lebih lama, Anda dapat mengekspor log Anda ke Cloud Storage. Anda juga dapat mengekspor log ke BigQuery dan Pub/Sub untuk diproses lebih lanjut.

Mengelola penggunaan resource log

Anda dapat mengontrol jumlah aktivitas logging dari log aplikasi dengan menulis lebih banyak atau lebih sedikit entri dari kode aplikasi Anda. Log permintaan dibuat secara otomatis. Jadi, untuk mengelola jumlah entri log permintaan yang terkait dengan aplikasi Anda, gunakan fitur pengecualian log dari Cloud Logging.

Masalah umum

Berikut adalah beberapa masalah logging di runtime generasi kedua:

  • Terkadang entri log aplikasi tidak berkorelasi dengan log permintaan. Hal ini terjadi saat pertama kali aplikasi Anda menerima permintaan dan saat App Engine menulis pesan status ke log aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat https://issuetracker.google.com/issues/138365527.

  • Saat Anda merutekan log dari sink log ke Cloud Storage, tujuan Cloud Storage hanya berisi log permintaan. App Engine menulis log aplikasi ke folder yang berbeda.

  • BigQuery gagal menyerap log karena kolom @type di log permintaan. Hal ini mengganggu deteksi skema otomatis, karena BigQuery tidak mengizinkan @type dalam nama kolom. Untuk mengatasi masalah ini, Anda harus menentukan skema secara manual, dan menghapus kolom @type dari log permintaan.

Langkah selanjutnya