Chapter 18: Logging, Catat Aktivitas Program dengan Rapi! 📝

"Logging itu kayak buku catatan, bantu kita lacak apa yang terjadi di program! 📝✨"
Doa: "Ya Tuhan, bantu kami mencatat aktivitas program dengan rapi biar mudah dilacak. Aamiin. 🙏"

Di chapter ini, kita bakal belajar cara mencatat aktivitas program di Python pake modul logging. Logging itu seperti buku catatan yang nyimpen informasi tentang apa yang terjadi di program, misalnya kapan acara tanam pohon dimulai atau kalo ada error. Kita akan pake semua konsep dari Chapter 1-17, termasuk datetime dari Chapter 17. Yuk, kita jadi pencatat aktivitas bareng Arry Hutomo! 🚀

Contoh Query Python: Logging buat Isu Lingkungan 🌍

1. Logging Dasar (Super Gampang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
logger.info("Program lingkungan dimulai!")

Output:

INFO:Program Lingkungan:Program lingkungan dimulai!

Penjelasan Output: Outputnya adalah "INFO:Program Lingkungan:Program lingkungan dimulai!" karena kita bikin logger dengan level INFO dan nama "Program Lingkungan". Pesan "Program lingkungan dimulai!" dicatat dengan level INFO, jadi ditampilkan di konsol. Format defaultnya adalah [LEVEL]:[NAMA_LOGGER]:[PESAN].

Penjelasan Query: Bayangin kamu punya buku catatan, dan kamu mau tulis bahwa program lingkungan dimulai, kayak nyanyi lagu sambil catat kapan lagunya dimulai. Di Python, kita bisa pake modul logging untuk catat aktivitas program. Pertama, aku impor import logging biar bisa pake modul ini. Aku konfigurasi logging pake logging.basicConfig(level=logging.INFO) biar pesan level INFO ke atas (seperti WARNING, ERROR) ditampilkan di konsol. Aku bikin logger bernama "Program Lingkungan" pake logging.getLogger("Program Lingkungan"), ini kayak kasih nama buku catatan supaya tau catatan ini buat program apa. Trus, aku catat pesan pake logger.info("Program lingkungan dimulai!"), yang artinya aku tulis pesan dengan level kepentingan INFO. Aku pilih tema lingkungan karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini sederhana banget, cocok buat pemula, kayak nulis catatan di buku harian tanpa ribet. Coba di VSCode, pasti langsung bisa! 🌱

2. Logging dengan Level Berbeda (Gampang)

import logging

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("Program Lingkungan")
logger.debug("Debug: Memulai program...")
logger.info("Info: Program lingkungan dimulai!")
logger.warning("Warning: Cek koneksi jaringan.")

Output:

DEBUG:Program Lingkungan:Debug: Memulai program...
INFO:Program Lingkungan:Info: Program lingkungan dimulai!
WARNING:Program Lingkungan:Warning: Cek koneksi jaringan.

Penjelasan Output: Outputnya mencetak tiga baris karena kita set level logging ke DEBUG, yang artinya semua pesan dari level DEBUG ke atas (INFO, WARNING, ERROR, CRITICAL) ditampilkan. Baris pertama level DEBUG ("Debug: Memulai program..."), baris kedua level INFO ("Info: Program lingkungan dimulai!"), dan baris ketiga level WARNING ("Warning: Cek koneksi jaringan.").

Penjelasan Query: Bayangin kamu punya buku catatan, dan kamu mau catat aktivitas program dengan tingkat kepentingan yang berbeda: ada catatan kecil (debug) yang cuma buat developer, info biasa buat tau program jalan, sama peringatan kalo ada yang perlu diperhatikan, kayak nyanyi lagu sambil catat nada rendah, sedang, dan tinggi. Di Python, modul logging punya level: DEBUG (paling rendah, buat detail teknis), INFO (buat info umum), WARNING (buat peringatan), ERROR (buat error), dan CRITICAL (buat error serius). Aku mulai dengan impor import logging. Aku set level ke DEBUG pake logging.basicConfig(level=logging.DEBUG) biar semua pesan ditampilkan, dari yang paling detail sampe yang penting. Aku bikin logger bernama "Program Lingkungan", trus catat tiga pesan dengan level berbeda: logger.debug() untuk catatan kecil, logger.info() untuk info biasa, dan logger.warning() untuk peringatan. Karena level diatur ke DEBUG, semua pesan muncul. Aku pilih tema lingkungan karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dengan tingkat kepentingan berbeda, kayak nulis catatan dengan warna berbeda biar tau mana yang lebih penting. Coba di VSCode, gampang kok! 🌳

3. Logging dengan Format Kustom (Gampang)

import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger("Program Lingkungan")
logger.info("Program lingkungan dimulai!")

Output:

2025-05-16 07:43:00,123 - Program Lingkungan - INFO - Program lingkungan dimulai!

Penjelasan Output: Outputnya adalah "2025-05-16 07:43:00,123 - Program Lingkungan - INFO - Program lingkungan dimulai!" (mikrodetik bisa beda). Kita set format kustom pake format di logging.basicConfig: %(asctime)s menampilkan waktu pencatatan (2025-05-16 07:43:00,123), %(name)s menampilkan nama logger ("Program Lingkungan"), %(levelname)s menampilkan level logging ("INFO"), dan %(message)s menampilkan pesan ("Program lingkungan dimulai!"). Semua dipisah dengan tanda "-".

Penjelasan Query: Bayangin kamu nulis di buku catatan, tapi kamu mau setiap catatan punya format rapi: ada waktu kapan kamu nulis, nama program, tingkat kepentingan, dan pesannya, kayak nyanyi lagu sambil catat waktu dan irama biar lebih teratur. Di Python, kita bisa kustomisasi format logging biar rapi dan informatif. Aku mulai dengan impor import logging. Aku konfigurasi logging pake logging.basicConfig dengan dua parameter: level=logging.INFO biar pesan level INFO ke atas muncul, dan format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" untuk tentuin format. Format ini artinya: %(asctime)s buat waktu pencatatan (otomatis dari sistem), %(name)s buat nama logger, %(levelname)s buat level logging, dan %(message)s buat pesan, semuanya dipisah tanda "-". Aku bikin logger bernama "Program Lingkungan", trus catat pesan pake logger.info(). Aku pilih tema lingkungan karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara format logging, kayak nulis catatan rapi di buku harian dengan waktu dan detail lainnya. Coba di VSCode, gampang kok! 🌳

4. Logging dengan Level Filter (Masih Gampang)

import logging

logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger("Program Lingkungan")
logger.debug("Debug: Memulai program...")
logger.info("Info: Program lingkungan dimulai!")
logger.warning("Warning: Cek koneksi jaringan.")

Output:

WARNING:Program Lingkungan:Warning: Cek koneksi jaringan.

Penjelasan Output: Outputnya cuma satu baris: "WARNING:Program Lingkungan:Warning: Cek koneksi jaringan." karena kita set level logging ke WARNING. Artinya, cuma pesan dengan level WARNING ke atas (WARNING, ERROR, CRITICAL) yang ditampilkan. Pesan level DEBUG dan INFO diabaikan karena levelnya lebih rendah dari WARNING.

Penjelasan Query: Bayangin kamu nulis di buku catatan, tapi kamu cuma mau catat hal-hal yang penting, misalnya peringatan aja, kayak nyanyi lagu cuma catat nada yang tinggi biar ga ribet. Di Python, kita bisa filter pesan logging berdasarkan level supaya ga semua pesan dicatat, cuma yang sesuai tingkat kepentingan. Aku mulai dengan impor import logging. Aku set level logging ke WARNING pake logging.basicConfig(level=logging.WARNING), yang artinya cuma pesan level WARNING, ERROR, dan CRITICAL yang akan ditampilkan. Aku bikin logger bernama "Program Lingkungan", trus catat tiga pesan dengan level berbeda: logger.debug() untuk catatan detail (ga muncul), logger.info() untuk info biasa (ga muncul), dan logger.warning() untuk peringatan (muncul). Aku pilih tema lingkungan karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara filter logging, kayak nulis catatan cuma yang penting supaya buku harian ga penuh. Coba di VSCode, gampang kok! 🌳

5. Logging dengan For Loop (Mulai Agak Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
for i in range(3):
    logger.info(f"Menanam pohon ke-{i+1}")

Output:

INFO:Program Lingkungan:Menanam pohon ke-1
INFO:Program Lingkungan:Menanam pohon ke-2
INFO:Program Lingkungan:Menanam pohon ke-3

Penjelasan Output: Outputnya mencetak tiga baris karena loop for berjalan tiga kali (range(3) menghasilkan i = 0, 1, 2). Tiap iterasi, logger catat pesan "Menanam pohon ke-1", "Menanam pohon ke-2", dan "Menanam pohon ke-3" dengan level INFO. Karena level logging diatur ke INFO, semua pesan ini ditampilkan.

Penjelasan Query: Bayangin kamu lagi tanam pohon selama tiga kali, dan tiap kali tanam, kamu catat di buku harian, kayak nyanyi lagu sambil catat nada tiap bait supaya ga lupa berapa pohon yang udah ditanam. Di Python, kita bisa pake loop for untuk catat aktivitas berulang pake logging, biar program otomatis mencatat setiap langkah. Aku mulai dengan impor import logging. Aku set level logging ke INFO pake logging.basicConfig(level=logging.INFO) biar pesan level INFO ke atas ditampilkan. Aku bikin logger bernama "Program Lingkungan", trus aku loop tiga kali pake for i in range(3), yang artinya i akan jadi 0, 1, 2. Tiap iterasi, aku catat pesan pake logger.info(f"Menanam pohon ke-{i+1}"), jadi pesan berubah sesuai nomor pohon: ke-1, ke-2, ke-3. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas berulang, kayak nulis catatan tiap langkah tanam pohon di buku harian. Coba di VSCode, gampang kok! 🌳

6. Logging dengan While Loop (Agak Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
i = 0
while i < 3:
    logger.info(f"Menanam pohon ke-{i+1}")
    i = i + 1

Output:

INFO:Program Lingkungan:Menanam pohon ke-1
INFO:Program Lingkungan:Menanam pohon ke-2
INFO:Program Lingkungan:Menanam pohon ke-3

Penjelasan Output: Outputnya sama seperti sebelumnya: tiga baris log mencatat "Menanam pohon ke-1" sampai "Menanam pohon ke-3". Kali ini, kita pake while loop untuk catat aktivitas tanam pohon tiga kali. Loop berjalan selama i kurang dari 3, dan i ditambah 1 tiap iterasi: i=0, i=1, i=2.

Penjelasan Query: Bayangin kamu tanam pohon tiga kali, tapi kali ini kamu hitung satu per satu secara manual, kayak nyanyi lagu sambil catat nada satu per satu dengan tangan biar lebih teliti. Di Python, kita bisa pake while loop untuk catat aktivitas berulang pake logging, mirip kayak loop for tapi lebih manual. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku inisialisasi i = 0 sebagai penghitung, trus loop pake while i < 3 biar berhenti setelah tiga pohon. Tiap iterasi, aku catat pesan pake logger.info(f"Menanam pohon ke-{i+1}"), trus tambah i pake i = i + 1. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dengan loop manual, kayak nulis catatan satu per satu di buku harian dengan teliti. Coba di VSCode, gampang kok! 🌳

7. Logging dengan If-Else (Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
pohon = 5
if pohon > 3:
    logger.info(f"Jumlah pohon ({pohon}) cukup untuk acara!")
else:
    logger.warning(f"Jumlah pohon ({pohon}) kurang dari target!")

Output:

INFO:Program Lingkungan:Jumlah pohon (5) cukup untuk acara!

Penjelasan Output: Outputnya adalah "INFO:Program Lingkungan:Jumlah pohon (5) cukup untuk acara!" karena variabel pohon bernilai 5, dan kondisi pohon > 3 bernilai True. Jadi, program masuk ke blok if dan logger mencatat pesan dengan level INFO. Level logging diatur ke INFO, jadi pesan ini ditampilkan.

Penjelasan Query: Bayangin kamu cek jumlah pohon untuk acara tanam pohon, dan kamu mau catat di buku harian apakah jumlahnya cukup atau kurang, kayak nyanyi lagu sambil cek apakah nadanya pas atau perlu diperbaiki. Di Python, kita bisa pake if-else untuk cek kondisi dan catat hasilnya pake logging, biar kita tau apa yang terjadi berdasarkan logika. Aku mulai dengan impor import logging. Aku set level logging ke INFO pake logging.basicConfig(level=logging.INFO) biar pesan level INFO ke atas ditampilkan. Aku bikin logger bernama "Program Lingkungan", trus aku bikin variabel pohon dengan nilai 5. Aku cek pake if pohon > 3: kalo True (jumlah pohon lebih dari 3), aku catat pesan sukses pake logger.info() yang bilang jumlah cukup; kalo False, aku catat peringatan pake logger.warning() yang bilang jumlah kurang. Karena 5 > 3, pesan INFO yang dicatat. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dengan logika, kayak nulis catatan di buku harian berdasarkan kondisi tertentu, misalnya kalo pohon cukup tulis hijau, kalo kurang tulis merah. Coba di VSCode, gampang kok! 🌳

8. Logging dengan Input (Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
pohon = int(input("Masukkan jumlah pohon: "))
logger.info(f"Jumlah pohon yang akan ditanam: {pohon}")

Output (misalnya user masukkan 10):

Masukkan jumlah pohon: 10
INFO:Program Lingkungan:Jumlah pohon yang akan ditanam: 10

Penjelasan Output: Outputnya dimulai dengan prompt "Masukkan jumlah pohon:", user masukin 10, trus logger mencatat "INFO:Program Lingkungan:Jumlah pohon yang akan ditanam: 10". Logger mencatat pesan dengan level INFO yang berisi jumlah pohon yang dimasukin user, dan karena level logging diatur ke INFO, pesan ini ditampilkan.

Penjelasan Query: Bayangin kamu minta orang kasih tau berapa pohon yang akan ditanam, trus kamu catat jumlah itu di buku harian, kayak nyanyi lagu dari lirik yang dikasih orang lain biar tau berapa pohon yang masuk rencana. Di Python, kita bisa pake input() untuk ambil data dari user, trus catat pake logging supaya ada jejak aktivitasnya. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku minta user masukin jumlah pohon pake input("Masukkan jumlah pohon: "), trus ubah input itu ke integer pake int() supaya jadi angka, dan simpen di variabel pohon. Aku catat jumlah pohon pake logger.info(f"Jumlah pohon yang akan ditanam: {pohon}"), jadi pesan yang dicatat berisi nilai yang dimasukin user. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas interaktif, kayak nulis catatan di buku harian berdasarkan info yang dikasih orang, biar tau jejaknya. Coba di VSCode, gampang kok! 🌳

9. Logging dengan List (Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
pohon_list = [10, 5, 8]
for i, jumlah in enumerate(pohon_list, 1):
    logger.info(f"Acara ke-{i}: Menanam {jumlah} pohon")

Output:

INFO:Program Lingkungan:Acara ke-1: Menanam 10 pohon
INFO:Program Lingkungan:Acara ke-2: Menanam 5 pohon
INFO:Program Lingkungan:Acara ke-3: Menanam 8 pohon

Penjelasan Output: Outputnya mencetak tiga baris karena kita punya list pohon_list dengan tiga elemen: [10, 5, 8]. Loop for pake enumerate(pohon_list, 1) ngasih indeks i (1, 2, 3) dan nilai jumlah (10, 5, 8). Tiap iterasi, logger catat pesan "Acara ke-1: Menanam 10 pohon", "Acara ke-2: Menanam 5 pohon", dan "Acara ke-3: Menanam 8 pohon" dengan level INFO.

Penjelasan Query: Bayangin kamu punya daftar rencana tanam pohon untuk tiga acara berbeda, dan kamu mau catat masing-masing acara di buku harian, kayak nyanyi lagu sambil catat nada dari tiga bait yang beda-beda. Di Python, kita bisa pake list untuk simpen data jumlah pohon, trus loop pake for untuk catat aktivitas tiap acara pake logging. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku bikin list pohon_list = [10, 5, 8] yang nyimpen jumlah pohon untuk tiga acara. Aku loop pake for i, jumlah in enumerate(pohon_list, 1), yang artinya: enumerate ngasih indeks i (mulai dari 1 karena aku kasih argumen 1) dan nilai jumlah dari list. Tiap iterasi, aku catat pesan pake logger.info(f"Acara ke-{i}: Menanam {jumlah} pohon"), jadi pesan berubah sesuai acara dan jumlah pohonnya. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dari list, kayak nulis catatan di buku harian untuk tiap acara berdasarkan daftar rencana. Coba di VSCode, gampang kok! 🌳

10. Logging dengan Dictionary (Menantang)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
pohon_dict = {"Acara 1": 10, "Acara 2": 5, "Acara 3": 8}
for acara, jumlah in pohon_dict.items():
    logger.info(f"{acara}: Menanam {jumlah} pohon")

Output:

INFO:Program Lingkungan:Acara 1: Menanam 10 pohon
INFO:Program Lingkungan:Acara 2: Menanam 5 pohon
INFO:Program Lingkungan:Acara 3: Menanam 8 pohon

Penjelasan Output: Outputnya mencetak tiga baris karena dictionary pohon_dict punya tiga pasang kunci-nilai: "Acara 1": 10, "Acara 2": 5, "Acara 3": 8. Loop for pake pohon_dict.items() ngasih kunci (acara) dan nilai (jumlah). Tiap iterasi, logger catat pesan sesuai kunci dan nilai, seperti "Acara 1: Menanam 10 pohon".

Penjelasan Query: Bayangin kamu punya folder berlabel yang nyimpen rencana tanam pohon untuk tiga acara, dan kamu mau catat masing-masing acara di buku harian, kayak nyanyi lagu sambil catat nada dari tiga album berlabel. Di Python, kita bisa pake dictionary untuk simpen data dengan label, trus loop pake for untuk catat aktivitas tiap acara pake logging. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku bikin dictionary pohon_dict dengan tiga pasang kunci-nilai: "Acara 1": 10, "Acara 2": 5, "Acara 3": 8, yang nyimpen nama acara dan jumlah pohon. Aku loop pake for acara, jumlah in pohon_dict.items(), yang artinya: items() ngasih kunci (acara) dan nilai (jumlah) dari dictionary. Tiap iterasi, aku catat pesan pake logger.info(f"{acara}: Menanam {jumlah} pohon"), jadi pesan berubah sesuai nama acara dan jumlah pohon. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dari dictionary, kayak nulis catatan di buku harian berdasarkan folder berlabel. Coba di VSCode, gampang kok! 🌳

11. Logging dengan Try-Except (Agak Sulit)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
try:
    pohon = int(input("Masukkan jumlah pohon: "))
    if pohon < 0:
        raise ValueError("Jumlah pohon tidak boleh negatif!")
    logger.info(f"Jumlah pohon yang akan ditanam: {pohon}")
except ValueError as e:
    logger.error(f"Error: {e}")

Output (misalnya user masukkan -5):

Masukkan jumlah pohon: -5
ERROR:Program Lingkungan:Error: Jumlah pohon tidak boleh negatif!

Penjelasan Output: Outputnya dimulai dengan prompt "Masukkan jumlah pohon:", user masukin -5. Program cek kalo jumlahnya negatif, trus lempar error pake raise ValueError("Jumlah pohon tidak boleh negatif!"). Error ini ditangkap oleh except ValueError, dan logger mencatat pesan error dengan level ERROR: "ERROR:Program Lingkungan:Error: Jumlah pohon tidak boleh negatif!".

Penjelasan Query: Bayangin kamu minta orang kasih tau jumlah pohon untuk ditanam, tapi kamu mau pastiin jumlahnya ga negatif, dan kalo ada error (misalnya input salah atau negatif), kamu catat di buku harian, kayak nyanyi lagu sambil cek apakah nadanya pas atau fals. Di Python, kita bisa pake try-except untuk nangani error dan catat pake logging. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Dalam blok try, aku minta input jumlah pohon, ubah ke integer pake int(), trus cek pake if pohon < 0: kalo negatif, aku lempar error pake raise ValueError. Kalo ga ada error, aku catat jumlah pohon pake logger.info(). Kalo ada error (misalnya input bukan angka atau negatif), error ditangkap oleh except ValueError dan dicatat pake logger.error(). Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dengan error handling, kayak nulis catatan di buku harian sambil cek apakah ada masalah. Coba di VSCode, gampang kok! 🌳

12. Logging dengan File Handling (Simulasi) (Agak Sulit)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")
# Simulasi file pohon.txt berisi:
# Pohon yang ditanam: 10
pesan = "Pohon yang ditanam: 10"
try:
    jumlah = int(pesan.split(": ")[1])
    logger.info(f"Jumlah pohon dari file: {jumlah}")
except ValueError:
    logger.error("Error: Gagal membaca jumlah pohon dari file!")

Output:

INFO:Program Lingkungan:Jumlah pohon dari file: 10

Penjelasan Output: Outputnya adalah "INFO:Program Lingkungan:Jumlah pohon dari file: 10" karena kita simulasi baca file dengan string pesan. Kita pisah string pake split(": ") untuk ambil bagian "10", ubah ke integer, trus logger mencatat jumlah pohon dengan level INFO. Karena ga ada error, pesan INFO ditampilkan.

Penjelasan Query: Bayangin kamu punya file berisi catatan jumlah pohon yang ditanam, dan kamu mau baca jumlah itu trus catat di buku harian, kayak nyanyi lagu sambil baca lirik dari buku. Di Python, kita bisa simulasi baca file (karena ga bisa I/O file di sini) dan catat aktivitasnya pake logging. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku simulasi isi file dengan string pesan = "Pohon yang ditanam: 10". Dalam blok try, aku pisah string pake split(": ") untuk ambil bagian "10", ubah ke integer pake int(), trus catat jumlah pohon pake logger.info(). Kalo ada error (misalnya format file salah), error ditangkap oleh except ValueError dan dicatat pake logger.error(). Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dari file, kayak nulis catatan di buku harian berdasarkan info dari file. Coba di VSCode, gampang kok! 🌳

13. Logging dengan OOP (Lebih Sulit)

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Program Lingkungan")

class PenanamPohon:
    def __init__(self, jumlah):
        self.jumlah = jumlah
        logger.info(f"Objek PenanamPohon dibuat dengan {self.jumlah} pohon")
    
    def tanam(self):
        logger.info(f"Memulai penanaman {self.jumlah} pohon...")
        return f"Selesai menanam {self.jumlah} pohon!"

penanam = PenanamPohon(10)
pesan = penanam.tanam()
logger.info(pesan)

Output:

INFO:Program Lingkungan:Objek PenanamPohon dibuat dengan 10 pohon
INFO:Program Lingkungan:Memulai penanaman 10 pohon...
INFO:Program Lingkungan:Selesai menanam 10 pohon!

Penjelasan Output: Outputnya mencetak tiga baris: pertama, saat objek PenanamPohon dibuat, logger mencatat "Objek PenanamPohon dibuat dengan 10 pohon"; kedua, saat metode tanam() dipanggil, logger mencatat "Memulai penanaman 10 pohon..."; ketiga, hasil metode tanam() ("Selesai menanam 10 pohon!") dicatat oleh logger. Semua pesan dicatat dengan level INFO.

Penjelasan Query: Bayangin kamu punya robot penanam pohon, dan robot ini catat setiap langkah kerjanya di buku harian, kayak nyanyi lagu sambil catat nada tiap langkah biar tau apa yang udah dilakuin. Di Python, kita bisa pake OOP (Chapter 13-14) untuk bikin kelas yang mencatat aktivitasnya pake logging. Aku mulai dengan impor import logging. Aku set level logging ke INFO, trus bikin logger bernama "Program Lingkungan". Aku bikin kelas PenanamPohon dengan atribut jumlah untuk simpen jumlah pohon. Di metode __init__, aku catat saat objek dibuat pake logger.info(). Di metode tanam, aku catat saat mulai tanam, trus return pesan selesai yang juga dicatat pake logger. Aku bikin objek penanam dengan 10 pohon, panggil metode tanam, dan catat hasilnya. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas pake OOP, kayak robot yang nulis catatan langkah kerjanya di buku harian. Coba di VSCode, gampang kok! 🌳

14. Logging dengan Waktu (Lebih Sulit)

import logging
from datetime import datetime

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger("Program Lingkungan")
sekarang = datetime.now()
logger.info(f"Program lingkungan dimulai pada {sekarang.strftime('%d-%m-%Y %H:%M:%S')}")

Output:

2025-05-16 07:43:00,123 - Program Lingkungan - INFO - Program lingkungan dimulai pada 16-05-2025 07:43:00

Penjelasan Output: Outputnya adalah "2025-05-16 07:43:00,123 - Program Lingkungan - INFO - Program lingkungan dimulai pada 16-05-2025 07:43:00" (mikrodetik bisa beda). Formatnya pake kustom dari logging.basicConfig. Pesan log nyatain waktu mulai program, yang diambil dari datetime.now() dan diformat pake strftime().

Penjelasan Query: Bayangin kamu nulis di buku catatan, dan kamu mau catat kapan program lingkungan dimulai dengan waktu yang tepat, kayak nyanyi lagu sambil catat waktu mulai biar tau kapan nadanya dimainkan. Di Python, kita bisa gabungin logging dengan datetime (Chapter 17) untuk catat waktu aktivitas. Aku mulai dengan impor import logging dan from datetime import datetime. Aku set level logging ke INFO dan format kustom yang sama seperti contoh 3, biar ada waktu, nama, level, dan pesan. Aku bikin logger, trus ambil waktu sekarang pake datetime.now(), simpen di variabel sekarang. Aku format waktu pake strftime('%d-%m-%Y %H:%M:%S') biar rapi, trus catat pesan pake logger.info() yang bilang program dimulai pada waktu itu. Aku pilih tema lingkungan karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas dengan waktu, kayak nulis catatan di buku harian dengan cap waktu biar tau kapan kejadiannya. Coba di VSCode, gampang kok! 🌳

15. Semua Digabung (Paling Sulit)

# Simulasi file lingkungan.py
import logging
from datetime import datetime

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)

class PenanamPohon:
    def __init__(self, data):
        self.data = data
        self.logger = logging.getLogger("Program Lingkungan")
        self.logger.debug("Objek PenanamPohon dibuat")
    
    def tanam_semua(self):
        try:
            hasil = {}
            i = 0
            while i < len(self.data):
                acara, jumlah = list(self.data.items())[i]
                self.logger.info(f"Memulai acara {acara} pada {datetime.now().strftime('%d-%m-%Y %H:%M:%S')}")
                if jumlah < 0:
                    self.logger.error(f"Error di {acara}: Jumlah pohon tidak boleh negatif!")
                else:
                    self.logger.info(f"{acara}: Menanam {jumlah} pohon")
                    hasil[acara] = jumlah
                i = i + 1
            return hasil
        except Exception as e:
            self.logger.error(f"Error saat menanam pohon: {e}")
            return {}

# File utama
# from lingkungan import PenanamPohon
data = {}
for i in range(3):
    try:
        acara = input(f"Masukkan nama acara ke-{i+1}: ")
        jumlah = int(input(f"Masukkan jumlah pohon untuk {acara}: "))
        data[acara] = jumlah
    except:
        logger = logging.getLogger("Program Lingkungan")
        logger.error("Error saat input data, coba lagi!")
        i = i - 1

penanam = PenanamPohon(data)
hasil = penanam.tanam_semua()
logger = logging.getLogger("Program Lingkungan")
logger.info(f"Hasil tanam: {hasil}")

Output (misalnya user masukkan "Acara 1", 10, "Acara 2", -5, "Acara 3", 8):

Masukkan nama acara ke-1: Acara 1
Masukkan jumlah pohon untuk Acara 1: 10
Masukkan nama acara ke-2: Acara 2
Masukkan jumlah pohon untuk Acara 2: -5
Masukkan nama acara ke-3: Acara 3
Masukkan jumlah pohon untuk Acara 3: 8
DEBUG:Program Lingkungan:Objek PenanamPohon dibuat
INFO:Program Lingkungan:Memulai acara Acara 1 pada 16-05-2025 07:43:00
INFO:Program Lingkungan:Acara 1: Menanam 10 pohon
INFO:Program Lingkungan:Memulai acara Acara 2 pada 16-05-2025 07:43:00
ERROR:Program Lingkungan:Error di Acara 2: Jumlah pohon tidak boleh negatif!
INFO:Program Lingkungan:Memulai acara Acara 3 pada 16-05-2025 07:43:00
INFO:Program Lingkungan:Acara 3: Menanam 8 pohon
INFO:Program Lingkungan:Hasil tanam: {'Acara 1': 10, 'Acara 3': 8}

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin tiga acara: "Acara 1" (10 pohon), "Acara 2" (-5 pohon), "Acara 3" (8 pohon). Logger mencatat: pembuatan objek (level DEBUG), mulai acara (level INFO), error di Acara 2 karena jumlah negatif (level ERROR), sukses tanam di Acara 1 dan 3 (level INFO), dan hasil akhir (level INFO). Dictionary hasil cuma nyimpen acara yang sukses: {'Acara 1': 10, 'Acara 3': 8}.

Penjelasan Query: Bayangin kamu punya robot penanam pohon super canggih yang minta orang kasih tau rencana tanam pohon, trus robot ini catat setiap langkah di buku harian, termasuk waktu, error kalo jumlah pohon salah, dan hasil akhir, kayak nyanyi lagu sambil catat nada dengan alat super biar ga ada yang terlewat. Di Python, kita gabungin semua konsep: input(), for loop, while loop, dictionary, if-else, try-except, OOP, datetime, dan logging. Aku bikin kelas PenanamPohon dengan atribut data (dictionary) dan logger. Metode tanam_semua loop pake while, catat waktu mulai tiap acara, cek jumlah pohon, simpen hasil sukses dalam dictionary, dan tangani error. Aku minta input user untuk tiga acara, trus jalankan metode dan catat hasilnya. Aku pilih tema tanam pohon karena Arry Hutomo peduli lingkungan, dan ini sesuai sama isu lingkungan. Struktur ini bikin kamu paham cara catat aktivitas kompleks, kayak robot yang nulis catatan lengkap di buku harian! Coba di VSCode, bakal bangga sama hasilnya! 🌳

Do and Don'ts

"Setiap log yang kamu buat adalah jejak untuk melacak perjalanan program! 🚀✨"
Doa: "Ya Tuhan, bantu kami terus belajar coding dengan semangat. Aamiin. 🙏"

✨ Sharing oleh Arry Hutomo dan ECC Team ✨