Dokumen ini menjelaskan cara menulis log tugas dan cara membuat serta menjalankan tugas Batch yang memiliki log tugas.
Jika logging diaktifkan untuk tugas, log tugas akan dihasilkan dari pesan yang dicetak oleh tugas yang dapat dijalankan selama waktu proses. Dengan mengonfigurasi runnable untuk menulis log tugas, Anda dapat menampilkan informasi kustom di Cloud Logging, yang dapat membantu memudahkan tugas Anda untuk dianalisis dan dipecahkan masalahnya. Untuk mempelajari log lebih lanjut, lihat 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 diperlukan guna membuat tugas yang menulis log, minta administrator untuk memberi Anda peran IAM berikut:
-
Untuk membuat tugas:
-
Batch Job Editor (
roles/batch.jobsEditor
) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default
-
Batch Job Editor (
-
Untuk melihat log:
Logs Viewer (
roles/logging.viewer
) di project
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
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 ingin memiliki log tugas, lakukan hal berikut saat Anda membuat tugas:
- Aktifkan log untuk tugas. Hal ini memungkinkan log apa pun yang ditulis untuk tugas dibuat.
Untuk setiap log tugas yang Anda inginkan untuk tugas, tambahkan perintah yang menulis log tugas ke yang dapat dijalankan. Saat tugas berjalan, log tugas akan dibuat setiap kali perintah untuk menulis log tugas dieksekusi.
Untuk mempelajari cara menulis log tugas, lihat Menulis log tugas dalam dokumen ini.
Menulis log tugas
Log tugas ditulis untuk konten apa pun yang dicetak oleh runnable tugas ke
aliran data output standar (stdout
) atau aliran data error standar (stderr
)
selama waktu proses. Misalnya, Anda dapat menulis log tugas menggunakan
perintah echo
.
Struktur log tugas yang dihasilkan bervariasi berdasarkan cara Anda memformat
konten yang dicetak. Secara khusus, Anda dapat menulis setiap log tugas menggunakan salah satu opsi berikut:
Menulis log tidak terstruktur dengan mencetak string. Log tidak terstruktur sederhana dan hanya memungkinkan Anda menentukan kolom
textPayload
log.Menulis 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 Anda gunakan sebagai filter saat melihat log untuk tugas.
Menulis log tidak terstruktur dengan mencetak string
Log tidak terstruktur memungkinkan Anda menentukan pesan, yang merupakan string yang muncul di
kolom textPayload
log.
Untuk menulis log tidak terstruktur, cetak string yang tidak diformat seperti yang ditunjukkan di bagian berikut.
Contoh log tidak terstruktur
Misalnya, Anda ingin log tugas yang berisi string berikut:
MESSAGE
Mencetak contoh string ini akan menghasilkan log tugas yang mirip dengan 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 menyatakan tujuan log tugas—misalnya,The summary for a task log.
.PROJECT_ID
: Project ID project Anda.
Mencetak string
Anda dapat mencetak string menggunakan berbagai metode, seperti dengan menyertakan perintah echo
berikut dalam kode yang dapat dijalankan:
echo MESSAGE
Untuk contoh tugas yang komprehensif 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 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 ingin log tugas yang berisi informasi dalam objek JSON berikut, yang menentukan 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 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 menyatakan tujuan log tugas—misalnya,The 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 enumLogSeverity
yang dikonversi menjadi string dengan hanya huruf pertama yang dikapitalisasi. 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 dalam yang dapat dijalankan:
echo '{\"message\":\"MESSAGE\", \"severity\":\"SEVERITY\", \"CUSTOM_FIELD_1\":CUSTOM_VALUE_1, \"CUSTOM_FIELD_2\":CUSTOM_VALUE_2}'
Misalnya, 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 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 kode 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))
Misalnya, 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 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 selengkapnya 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 pembuatan tugas lainnya.