Python - Logging

Halo para pemrogram Python yang aspiratif! Hari ini, kita akan menyelam ke dalam dunia yang menakjubkan dari logging di Python. Sebagai guru komputer ramah lingkungan Anda, saya sangat senang untuk menemani Anda dalam perjalanan ini. percayalah, pada akhir tutorial ini, Anda akan melakukan logging seperti seorang profesional!

Python - Logging

Logging di Python

Bayangkan Anda adalah detektif yang mencoba untuk menyelidiki sebuah misteri. Anda pasti ingin melacak semua petunjuk yang Anda temukan, kan? Itulah fungsi logging dalam pemrograman! Ini membantu kita melacak apa yang terjadi di kode kita saat itu berjalan.

Python memiliki modul logging bawaan yang membuat proses ini sangat mudah. Ini seperti memiliki buku catatan yang dapat dipercaya yang secara otomatis menulis down informasi penting untuk Anda.

Manfaat Logging

Sekarang, Anda mungkin bertanya-tanya, "Mengapa harus repot-repot dengan logging jika saya bisa saja menggunakan pernyataan print?" Pertanyaan yang bagus! Izinkan saya untuk berbagi cerita kecil dari masa-masa awal saya mengkodekan.

Saya sekali waktu menghabiskan jam-jam untuk debugging program menggunakan pernyataan print. Itu seperti mencari jarum di atas rak padi! Itu saat saya menemukan keajaiban logging. Berikut adalah beberapa manfaat:

  1. Fleksibilitas: Tidak seperti pernyataan print, log dapat dengan mudah dimatikan atau dinyalakan tanpa mengubah kode.
  2. Tingkat Keparahan: Anda dapat mengkategorikan log Anda berdasarkan tingkat kepentingannya.
  3. Kontrol Output: Log dapat dikirim ke file, konsol, atau bahkan server jarak jauh!
  4. Performa: Logging memiliki dampak yang lebih kecil pada performa jika dibandingkan dengan pernyataan print.

Komponen Logging Python

Mari kita pecahkan komponen utama dari logging Python:

  1. Loggers: Ini adalah titik masuk ke sistem logging.
  2. Handlers: Mereka mengirimkan catatan log ke tujuan yang sesuai.
  3. Formatters: Mereka menentukan tata letak catatan log dalam output akhir.
  4. Filters: Ini memberikan kontrol tambahan atas catatan log mana yang akan dioutput.

Pikirkan seperti garis produksi di pabrik. Logger adalah pekerja yang mendeteksi masalah, handler yang memutuskan di mana harus mengirimkan laporan, formatter yang memutuskan bagaimana laporan harus terlihat, dan filter yang memutuskan laporan mana yang cukup penting untuk dilewati.

Tingkat Logging

Logging Python memiliki lima tingkat keparahan standar. Mari kita lihat di atas tabel yang praktis:

Tingkat Nilai Numerik Deskripsi
DEBUG 10 Informasi detil, biasanya hanya menarik saat mengdiagnosa masalah.
INFO 20 Konfirmasi bahwa semua hal berjalan sesuai harapan.
WARNING 30 Indikasi bahwa sesuatu yang tak terduga terjadi, atau menandakan masalah yang akan datang.
ERROR 40 Karena masalah yang lebih serius, software tidak dapat melakukan beberapa fungsi.
CRITICAL 50 Kesalahan yang serius, menandakan bahwa program itu sendiri mungkin tidak dapat berjalan lagi.

Contoh Logging Dasar

Mari kita mulai dengan contoh sederhana untuk mendapatkan kaki kita kering:

import logging

# Konfigurasikan logging dasar
logging.basicConfig(level=logging.INFO)

# Buat logger
logger = logging.getLogger(__name__)

# Log beberapa pesan
logger.debug("Ini adalah pesan debug")
logger.info("Ini adalah pesan info")
logger.warning("Ini adalah pesan peringatan")
logger.error("Ini adalah pesan kesalahan")
logger.critical("Ini adalah pesan kritis")

Jika Anda menjalankan kode ini, Anda akan melihat output seperti ini:

INFO:__main__:Ini adalah pesan info
WARNING:__main__:Ini adalah pesan peringatan
ERROR:__main__:Ini adalah pesan kesalahan
CRITICAL:__main__:Ini adalah pesan kritis

Perhatikan bahwa pesan DEBUG tidak muncul? Itu karena kita mengatur level konfigurasi dasar ke INFO. Apapun di bawah INFO (seperti DEBUG) tidak akan dicatat kecuali kita mengubah konfigurasi.

Mengkonfigurasi Logging

Sekarang, mari kita sedikit lebih keren dengan konfigurasi logging kita:

import logging

# Konfigurasikan logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
filename='app.log'
)

logger = logging.getLogger(__name__)

logger.debug("Pesan debug")
logger.info("Pesan info")
logger.warning("Pesan peringatan")
logger.error("Pesan kesalahan")
logger.critical("Pesan kritis")

Dalam contoh ini, kita telah:

  1. Mengatur level logging ke DEBUG
  2. Menentukan format untuk pesan log kita
  3. Mengarahkan output ke file bernama 'app.log'

Jika Anda memeriksa file 'app.log', Anda akan melihat pesan log yang rapih dengan tanda waktu!

Handlers Logging

Handler adalah seperti layanan pos dari dunia logging. Mereka menentukan di mana pesan log Anda akan berakhir. Mari kita lihat contoh menggunakan beberapa handler:

import logging

# Buat logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# Buat handler
c_handler = logging.StreamHandler()  # Handler konsol
f_handler = logging.FileHandler('file.log')  # Handler file
c_handler.setLevel(logging.WARNING)
f_handler.setLevel(logging.ERROR)

# Buat formatter dan tambahkan ke handler
c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
c_handler.setFormatter(c_format)
f_handler.setFormatter(f_format)

# Tambahkan handler ke logger
logger.addHandler(c_handler)
logger.addHandler(f_handler)

# Test logger
logger.debug('Ini adalah pesan debug')
logger.info('Ini adalah pesan info')
logger.warning('Ini adalah pesan peringatan')
logger.error('Ini adalah pesan kesalahan')
logger.critical('Ini adalah pesan kritis')

Dalam contoh ini, kita telah mengatur dua handler:

  1. Sebuah StreamHandler yang mengirimkan PERINGATAN dan di atas ke konsol
  2. Sebuah FileHandler yang mencatat kesalahan dan di atas ke file

Jalankan kode ini, dan Anda akan melihat PERINGATAN dan di atas di konsol Anda, sementara hanya kesalahan dan KRITIS pesan disimpan ke file.

Dan itu adalah dia, folks! Anda baru saja mengambil langkah pertama Anda ke dalam dunia logging Python. Ingat, latihan membuat perfect. Cobalah bermain dengan konfigurasi yang berbeda dan lihat apa yang paling baik untuk proyek Anda.

Selamat logging, dan semoga kode Anda selalu bebas dari bug!

Credits: Image by storyset