Dokumen ini menjelaskan cara menulis log tugas dan cara membuat serta menjalankan tugas Batch yang memiliki log tugas.
Saat logging diaktifkan untuk suatu tugas, log tugas akan dihasilkan dari pesan yang dicetak oleh runnable tugas selama runtime. Dengan mengonfigurasi runnable untuk menulis log tugas, Anda dapat menampilkan informasi kustom di Cloud Logging, yang dapat membantu mempermudah analisis dan pemecahan masalah Anda. Untuk mempelajari log lebih lanjut, baca bagian Menganalisis tugas menggunakan log.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang Anda perlukan guna membuat tugas yang menulis log, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Untuk membuat tugas:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang secara default merupakan akun layanan Compute Engine default
-
Batch Job Editor (
-
Untuk melihat log:
Logs Viewer (
roles/logging.viewer
) di project
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Untuk membuat tugas:
Membuat dan menjalankan tugas yang memiliki log tugas
Untuk membuat dan menjalankan tugas yang Anda inginkan untuk memiliki log tugas, lakukan hal berikut saat Anda membuat tugas:
- Aktifkan log untuk tugas. Dengan begitu, log yang ditulis untuk tugas dapat dibuat.
Untuk setiap log tugas yang Anda inginkan untuk tugas tersebut, tambahkan perintah yang menulis log tugas ke runnable. Saat tugas berjalan, log tugas akan dibuat setiap kali perintah untuk menulis log tugas dijalankan.
Untuk mempelajari cara menulis log tugas, lihat bagian Menulis log tugas dalam dokumen ini.
Menulis log tugas
Log tugas ditulis untuk setiap konten yang dicetak oleh runnable tugas ke
streaming output standar (stdout
) atau stream error standar (stderr
)
selama runtime. Misalnya, Anda dapat menulis log tugas menggunakan perintah echo
.
Struktur log tugas yang dihasilkan bervariasi berdasarkan cara Anda memformat
konten cetak. Secara khusus, Anda dapat menulis setiap log tugas menggunakan salah satu opsi berikut:
Tulis log tidak terstruktur dengan mencetak string. Log tidak terstruktur itu sederhana dan hanya memungkinkan Anda menentukan kolom
textPayload
log.Tulis log terstruktur dengan mencetak JSON. Log terstruktur memerlukan pemformatan JSON, yang memungkinkan Anda menentukan beberapa kolom, termasuk beberapa kolom log standar, kolom kustom, dan peristiwa status kustom.
Misalnya, Anda dapat menggunakan log tugas terstruktur untuk menentukan tingkat keparahan log, yang dapat digunakan sebagai filter saat melihat log tugas.
Menulis log tidak terstruktur dengan mencetak string
Log tidak terstruktur memungkinkan Anda menentukan pesan, yaitu string yang muncul di kolom textPayload
log.
Untuk menulis log tidak terstruktur, cetak string tidak berformat seperti yang ditunjukkan di bagian berikut.
Contoh log tidak terstruktur
Misalnya, Anda menginginkan log tugas yang berisi string berikut:
MESSAGE
Mencetak string contoh ini akan menghasilkan log tugas yang mirip dengan yang berikut ini:
insertId: ...
labels: ...
logName: projects/PROJECT_ID/logs/batch_task_logs
receiveTimestamp: ...
resource: ...
severity: INFO
textPayload: MESSAGE
timestamp: ...
Ganti kode berikut:
MESSAGE
: pesan, yang merupakan string yang meringkas tujuan log tugas, misalnyaThe summary for a task log.
.PROJECT_ID
: project ID project Anda.
Mencetak string
Anda dapat mencetak string menggunakan berbagai metode, misalnya dengan menyertakan
perintah echo
berikut dalam fungsi runnable:
echo MESSAGE
Untuk mengetahui contoh komprehensif tugas yang menggunakan perintah echo
untuk menulis
log tugas yang tidak terstruktur, lihat
Membuat dan menjalankan tugas dasar.
Menulis log terstruktur dengan mencetak objek JSON
Log terstruktur memungkinkan Anda menentukan salah satu dari hal berikut:
- Kolom standar yang didukung oleh agen Cloud Logging
- Kolom kustom
- Peristiwa status kustom
Untuk menulis log terstruktur, cetak objek JSON. Bagian berikut menunjukkan cara menentukan log dengan beberapa kolom standar dan kolom kustom. Jika Anda ingin mempelajari cara menentukan log dengan peristiwa status kustom, lihat juga Mengonfigurasi peristiwa status kustom.
Contoh log terstruktur
Misalnya, Anda menginginkan log tugas yang berisi informasi dalam objek JSON berikut, yang mendefinisikan pesan, tingkat keparahan, dan dua kolom kustom.
{
"message": "MESSAGE"
"severity": "SEVERITY"
"CUSTOM_FIELD_1": CUSTOM_VALUE_1
"CUSTOM_FIELD_2": CUSTOM_VALUE_2
}
Mencetak objek JSON ini akan menghasilkan log tugas yang mirip dengan yang berikut ini:
insertId: ...
jsonPayload:
"CUSTOM_FIELD_1": CUSTOM_VALUE_1
"CUSTOM_FIELD_2": CUSTOM_VALUE_2
message: MESSAGE
labels: ...
logName: projects/PROJECT_ID/logs/batch_task_logs
receiveTimestamp: ...
resource: ...
severity: SEVERITY
timestamp: ...
Ganti kode berikut:
MESSAGE
: pesan, yang merupakan string yang meringkas tujuan log tugas, misalnyaThe summary for a task log.
.SEVERITY
: tingkat keparahan log, yang dapat Anda gunakan sebagai filter saat melihat log untuk tugas. Tingkat keparahan harus berupa salah satu dari enumLogSeverity
yang dikonversi menjadi string yang hanya menggunakan huruf besar untuk huruf pertama. Misalnya, untuk enumERROR
, tentukanError
.CUSTOM_FIELD_1
danCUSTOM_FIELD_2
: nama kolom kustom untuk log tugas—misalnya,custom_field_1
dancustom_field_2
.CUSTOM_VALUE_1
danCUSTOM_VALUE_2
: nilai kolom kustom untuk log tugas, yang dapat berupa berbagai jenis data dan mungkin memerlukan tanda kutip—misalnya,"the first custom field"
dan2
.PROJECT_ID
: project ID project Anda.
Mencetak objek JSON
Anda dapat mencetak contoh objek JSON ini menggunakan berbagai metode. Misalnya, contoh berikut menunjukkan beberapa kemungkinan metode untuk mencetak contoh objek JSON:
- Cetak string yang setara menggunakan perintah
echo
. Cetak kamus yang setara menggunakan Python.
perintah echo
Untuk mencetak contoh objek JSON menggunakan perintah echo
dan string yang setara, sertakan perintah berikut di runnable:
echo '{\"message\":\"MESSAGE\", \"severity\":\"SEVERITY\", \"CUSTOM_FIELD_1\":CUSTOM_VALUE_1, \"CUSTOM_FIELD_2\":CUSTOM_VALUE_2}'
Sebagai contoh, misalkan Anda membuat dan menjalankan tugas dengan runnable berikut:
"script": {
"text": "echo '{\"message\":\"The message for a structured log.\", \"severity\":\"Error\", \"custom_field_1\":\"the first custom field\", \"custom_field_2\":2}'"
}
Kemudian, log tugas yang dihasilkan akan mirip dengan yang berikut ini:
insertId: ...
jsonPayload:
custom_field_1: the first custom field
custom_field_2: 2
message: The summary for a structured task log with error severity.
labels: ...
logName: projects/PROJECT_ID/logs/batch_task_logs
receiveTimestamp: ...
resource: ...
severity: ERROR
timestamp: ...
Python
Untuk mencetak contoh objek JSON menggunakan Python dan kamus yang setara, sertakan contoh berikut dalam file yang dapat dijalankan:
#!/usr/bin/env python3
import json
entry = dict(
severity="SEVERITY",
message="MESSAGE",
CUSTOM_FIELD_1=CUSTOM_VALUE_1,
CUSTOM_FIELD_2=CUSTOM_VALUE_2,
)
print(json.dumps(entry))
Sebagai contoh, misalkan Anda membuat dan menjalankan tugas dengan runnable berikut:
"script": {
"text": "#!/usr/bin/env python3\n\nimport json\n\nentry = dict(\nseverity=\"Error\",\nmessage=\"The summary for a structured task log with error severity.\",\ncustom_field_1=\"the first custom field\",\ncustom_field_2=2,\n)\nprint(json.dumps(entry))"
}
Kemudian, log tugas yang dihasilkan akan mirip dengan yang berikut ini:
insertId: ...
jsonPayload:
custom_field_1: the first custom field
custom_field_2: 2
message: The summary for a structured task log with error severity.
labels: ...
logName: projects/PROJECT_ID/logs/batch_task_logs
receiveTimestamp: ...
resource: ...
severity: ERROR
timestamp: ...
Langkah selanjutnya
- Untuk mengetahui informasi lebih lanjut tentang cara memformat log, lihat Logging terstruktur dalam dokumentasi Cloud Logging.
- Pelajari cara menulis log tugas terstruktur yang menyertakan peristiwa status kustom.
- Pelajari cara melihat log tugas untuk tugas.
- Pelajari opsi penciptaan pekerjaan lainnya.