Ringkasan
Saat permintaan dikirim ke aplikasi Anda, log permintaan ditulis secara otomatis oleh App Engine. Selama menangani permintaan, aplikasi Anda juga dapat menulis log aplikasi. Di halaman ini, Anda akan mempelajari cara menulis log aplikasi dari aplikasi, cara melihat logging di Konsol Google Cloud, dan cara memahami log permintaan yang ditulis App Engine selama permintaan.
Untuk mengetahui informasi tentang cara mendownload data log, lihat Ringkasan ekspor log.
Log permintaan vs log aplikasi
Ada dua kategori data log: log permintaan dan log aplikasi. Log permintaan secara otomatis ditulis oleh App Engine untuk setiap permintaan yang ditangani oleh aplikasi Anda, dan berisi informasi seperti ID project, versi HTTP, dan sebagainya. Untuk mengetahui daftar lengkap properti yang tersedia untuk log permintaan, lihat RequestLogs. Lihat juga tabel log permintaan untuk deskripsi kolom log permintaan.
Setiap log permintaan berisi daftar log aplikasi (AppLogLine) yang terkait dengan permintaan tersebut, yang ditampilkan dalam metode RequestLogs.getAppLogLines()
. Setiap log aplikasi berisi waktu penulisan log, pesan log, dan level log.
Menulis log aplikasi
App Engine Java SDK memungkinkan developer mencatat tingkat keparahan berikut:- SEVERE
- WARNING
- INFO
- CONFIG
- FINE
- FINER
- FINEST
Level log, INFO
, WARNING
, dan SEVERE
, muncul dalam log tanpa
konfigurasi tambahan. Untuk menambahkan level logging lainnya ke aplikasi Java,
Anda perlu menambahkan properti sistem yang sesuai ke file appengine-web.xml
project dan Anda mungkin juga perlu memodifikasi
logging.properties
untuk menyetel level log yang diinginkan. Kedua file ini
dibuat saat Anda membuat project Java App Engine baru menggunakan Maven. Anda dapat menemukan file ini di
lokasi berikut:
Untuk menambahkan level log selain INFO
, WARNING
, atau SEVERE
, edit
file appengine-web.xml
untuk menambahkan kode berikut di dalam
tag <appengine-web-app>
:
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
Level log default di logging.properties
adalah INFO
. Untuk mengubah level log default
bagi semua class di aplikasi Anda, edit file logging.properties
untuk
mengubah level. Misalnya, Anda dapat mengubah .level = INFO
menjadi .level = WARNING
.
Dalam kode aplikasi, tulis pesan log menggunakan java.util.logging.Logger API. Contoh di bawah ini menulis pesan log Info:
import java.util.logging.Logger; //... public class MyClass { private static final Logger log = Logger.getLogger(MyClass.class.getName()); log.info("Your information log message."); //....
Saat aplikasi Anda berjalan, App Engine akan mencatat pesan dan menyediakannya di Logs Explorer.
Format URL log di konsol Google Cloud
Lihat contoh URL berikut untuk mengetahui contoh format URL log di Konsol Google Cloud:
https://console.cloud.google.com/logs?filters=request_id:000000db00ff00ff827e493472570001737e73686966746361727331000168656164000100
Membaca log di konsol
Untuk melihat log yang ditulis oleh aplikasi yang berjalan di lingkungan standar, gunakan Logs Explorer.
Log App Engine standar berisi data dalam format log gabungan Apache, beserta beberapa kolom App Engine khusus, seperti yang ditampilkan dalam contoh log berikut:
192.0.2.0 - test [27/Jun/2014:09:11:47 -0700] "GET / HTTP/1.1" 200 414
"http://www.example.com/index.html"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
"1-dot-calm-sylph-602.appspot.com" ms=195 cpu_ms=42 cpm_usd=0.000046
loading_request=1 instance=00c61b117cfeb66f973d7df1b7f4ae1f064d app_engine_release=
Memahami kolom log permintaan
Tabel berikut mencantumkan kolom dalam urutan kemunculan bersama dengan deskripsi:
Urutan Kolom | Nama Kolom | Selalu Ada? | Deskripsi |
---|---|---|---|
1 | Alamat klien | Ya | Alamat IP klien. Contoh: 192.0.2.0 |
2 | Identitas RFC 1413 | Tidak | Identitas klien RFC 1413. Ini hampir selalu berupa karakter - |
3 | Pengguna | Tidak | Hanya ditampilkan jika aplikasi menggunakan Users API dan pengguna sudah login. Nilai ini adalah bagian "nama panggilan" Akun Google, misalnya, jika Akun Google adalah test@example.com , nama panggilan yang dicatat dalam kolom ini adalah test . |
4 | Stempel waktu | Ya | Stempel waktu permintaan. Contoh: [27/Jun/2014:09:11:47 -0700] |
5 | Meminta string kueri | Ya | Baris pertama permintaan, yang berisi metode, jalur, dan versi HTTP. Contoh: GET / HTTP/1.1 |
6 | Kode Status HTTP | Ya | Kode status HTTP dikembalikan. Contoh: 200 |
7 | Ukuran respons | Ya | Ukuran respons dalam byte. Contoh: 414 |
8 | Jalur perujuk | Tidak | Jika tidak ada perujuk, log tidak akan berisi jalur, tetapi hanya - . Contoh jalur perujuk: "http://www.example.com/index.html" . |
9 | Agent pengguna | Ya | Mengidentifikasi browser dan sistem operasi ke server web. Contoh: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 |
10 | Nama host | Ya | Nama host yang digunakan oleh klien untuk terhubung ke aplikasi App Engine. Contoh : (1-dot-calm-sylph-602.appspot.com ) |
11 | Waktu jam dinding | Ya | Total waktu jam dalam milidetik yang dihabiskan oleh App Engine pada permintaan. Durasi waktu ini tidak termasuk waktu yang dihabiskan antara klien dan server untuk menjalankan instance aplikasi Anda. Contoh: ms=195 . |
12 | CPU milidetik | Ya | Milidetik CPU yang diperlukan untuk memenuhi permintaan. Ini adalah jumlah milidetik yang dihabiskan oleh CPU untuk benar-benar mengeksekusi kode aplikasi Anda, yang dinyatakan dalam CPU Intel x86 1,2 GHz baseline. Jika CPU yang benar-benar digunakan lebih cepat dari baseline, milidetik CPU dapat lebih besar daripada waktu jam sebenarnya yang ditentukan di atas. Contoh: cpu_ms=42 |
13 | Exit code | Tidak | Hanya ada jika instance dimatikan setelah mendapatkan permintaan. Dalam format exit_code=XXX dengan XXX adalah angka 3 digit yang sesuai dengan alasan penonaktifan instance. Kode keluar tidak didokumentasikan karena pada dasarnya dimaksudkan untuk membantu Google menemukan dan memperbaiki masalah. |
14 | Perkiraan biaya | Ya | TIDAK DIGUNAKAN LAGI. Perkiraan biaya 1.000 permintaan seperti ini, dalam USD. Contoh: cpm_usd=0.000046 |
15 | Nama antrean | Tidak | Nama task queue yang digunakan. Hanya ada jika permintaan menggunakan task queue. Contoh: queue_name=default |
16 | Nama tugas | Tidak | Nama tugas yang dieksekusi di task queue untuk permintaan ini. Hanya ada jika permintaan menyebabkan antrean tugas. Contoh: task_name=7287390692361099748 |
17 | Antrean tertunda | Tidak | Hanya ada jika permintaan menghabiskan beberapa waktu dalam antrean tertunda. Jika ada banyak instance di log dan/atau nilainya tinggi, hal ini mungkin merupakan indikasi bahwa Anda memerlukan lebih banyak instance untuk menyajikan traffic. Contoh: pending_ms=195 |
18 | Memuat permintaan | Tidak | Hanya ada jika permintaan adalah permintaan pemuatan. Ini berarti sebuah instance harus dimulai. Idealnya, instance harus aktif dan responsif selama mungkin, melayani sejumlah besar permintaan sebelum didaur ulang dan perlu dimulai lagi. Yang berarti Anda tidak akan melihat terlalu banyak hal ini di log Anda. Contoh: loading_request=1 . |
19 | Instance | Ya | ID unik untuk instance yang menangani permintaan. Contoh: instance=00c61b117cfeb66f973d7df1b7f4ae1f064d |
20 | Versi | Ya | Versi rilis App Engine saat ini yang digunakan dalam App Engine produksi: |
Kuota dan batas
Aplikasi Anda terpengaruh oleh kuota terkait log berikut:
- Mencatat data ke dalam log yang diambil melalui Logs API.
- Alokasi dan retensi penyerapan log.
Kuota untuk data yang diambil
Gratis 100 megabyte data log pertama yang diambil per hari melalui panggilan Logs API. Data yang melebihi 100 megabyte akan dikenai biaya sebesar $0,12/GB.
Alokasi penyerapan log
Logging untuk aplikasi App Engine disediakan oleh Google Cloud Observability. Lihat Harga Google Cloud Observability untuk mengetahui informasi selengkapnya tentang biaya dan batas logging. Untuk penyimpanan log jangka panjang, Anda dapat mengekspor log dari Google Cloud Observability ke Cloud Storage, BigQuery, dan Pub/Sub.