Python - Logging

Hai di sana, pemrogram Python yang berhasrat! Hari ini, kita akan melangkah ke atas dunia penyusunan log yang wondrous dalam Python. Sebagai guru komputer yang mesra di kampung halaman anda, saya sangat gembira untuk membimbing anda melalui perjalanan ini. Percayalah, pada akhir tutorial ini, anda akan menyusun log seperti seorang profesional!

Python - Logging

Penyusunan Log dalam Python

Bayangkan anda adalah seorang detektif yang mencari untuk menjalankan satu misteri. Anda mahu untuk melacak semua petunjuk yang anda temui, kan? Well, itulah yang penyusunan log lakukan dalam pengaturcaraan! Ia membantu kita melacak apa yang berlaku di atas kod kita semasa ia dijalankan.

Python datang dengan modul penyusunan log bawaan yang membuat proses ini menjadi mudah. Ia seperti memiliki rak buku yang dapat dipercayai yang secara automatik menulis down informasi penting untuk anda.

Kelebihan Penyusunan Log

Sekarang, anda mungkin berfikir, "Mengapa perlu susun log apabila saya boleh hanya menggunakan pernyataan cetak?" Pertanyaan hebat! Izinkan saya untuk berkongsi beberapa cerita dari zaman awal saya mengkod.

Saya sekali dihabiskan beberapa jam untuk menyahpepijat program menggunakan pernyataan cetak. Ia seperti mencari jarum di atas rak penyusun! Itulah saat saya menemui penyusunan log yang penyihir. Berikut adalah beberapa kelebihan:

  1. Ketebalan: Tidak seperti pernyataan cetak, log dapat dengan mudah dihidupkan atau dimatikan tanpa mengubah kod.
  2. Tingkat Keparahan: Anda boleh mengkategorikan log anda berdasarkan kepentingannya.
  3. Kawalan Output: Log boleh diarahkan ke fail, konsol, atau bahkan pelayan jauh!
  4. Prestasi: Penyusunan log memiliki dampak yang lebih kecil terhadap prestasi jika dibandingkan dengan pernyataan cetak.

Komponen Penyusunan Log Python

Mari kita kongsi komponen utama penyusunan log Python:

  1. Pengguna Log: Ini adalah pintu masuk ke atas sistem penyusunan log.
  2. Pengendali: Mereka mengirimkan rak log ke destinasi yang sesuai.
  3. Pengformat: Mereka menentukan bentuk rak log di atas output akhir.
  4. Penapis: Ini memberikan kawalan tambahan atas rak log mana yang harus dioutput.

Pikirkan tentang seperti rak penyusun di atas kilang. Pengguna log adalah pekerja yang melacak masalah, pengendali menentukan di mana untuk mengirim laporan, pengformat menentukan bagaimana laporan sepatutnya kelihatan, dan penapis menentukan laporan mana penting untuk dilepaskan.

Tingkat Penyusunan Log

Penyusunan log Python datang dengan lima tingkat keparahan standard. Mari kita lihat di atas atas rak yang ringan:

Tingkat Nilai Numerik Keterangan
DEBUG 10 Informasi terperinci, biasanya hanya penting apabila mengdiagnosa masalah.
INFO 20 Konfirmasi bahwa perkara berjalan seperti yang dijangka.
WARNING 30 Indikasi yang sesuatu yang tidak dijangka terjadi, atau menunjukkan beberapa masalah di depan.
ERROR 40 Karena masalah yang lebih serius, perisian tidak dapat melakukan beberapa fungsi.
CRITICAL 50 Kesalahan yang serius, menunjukkan bahwa program itu sendiri mungkin tidak dapat terus berjalan.

Contoh Penyusunan Log Asas

Mari kita mula dengan contoh ringan untuk mendapatkan kaki kita kering:

import logging

# Konfigurasikan penyusunan log asas
logging.basicConfig(level=logging.INFO)

# Buat pengguna log
pengguna_log = logging.getLogger(__name__)

# Log beberapa mesej
pengguna_log.debug("Ini adalah mesej debug")
pengguna_log.info("Ini adalah mesej info")
pengguna_log.warning("Ini adalah mesej peringatan")
pengguna_log.error("Ini adalah mesej kesalahan")
pengguna_log.critical("Ini adalah mesej kritikal")

Jika anda jalankan kod ini, anda akan lihat output seperti ini:

INFO:__main__:Ini adalah mesej info
WARNING:__main__:Ini adalah mesej peringatan
ERROR:__main__:Ini adalah mesej kesalahan
CRITICAL:__main__:Ini adalah mesej kritikal

Perhatikan bagaimana mesej DEBUG tidak muncul? Itu karena kita menetapkan tingkat konfigurasi log asas ke INFO. Apa pun di bawah INFO (seperti DEBUG) tidak akan di log kecuali kita mengubah konfigurasi.

Mengkonfigurasi Penyusunan Log

Sekarang, mari kita sedikit lebih kelas dengan konfigurasi penyusunan log kita:

import logging

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

pengguna_log = logging.getLogger(__name__)

pengguna_log.debug("Mesej debug")
pengguna_log.info("Mesej info")
pengguna_log.warning("Mesej peringatan")
pengguna_log.error("Mesej kesalahan")
pengguna_log.critical("Mesej kritikal")

Dalam contoh ini, kita telah:

  1. Tetapkan tingkat penyusunan log ke DEBUG
  2. Tentukan format untuk mesej log kita
  3. Arahkan output ke fail bernama 'app.log'

Jika anda periksa fail 'app.log', anda akan lihat mesej log yang diformat dengan baik dengan tanda waktu!

Pengendali Penyusunan Log

Pengendali adalah seperti perkhidmatan pos penyusunan log. Mereka menentukan di mana mesej log anda akan berakhir. Mari kita lihat contoh menggunakan beberapa pengendali:

import logging

# Buat pengguna log
pengguna_log = logging.getLogger(__name__)
pengguna_log.setLevel(logging.DEBUG)

# Buat pengendali
c_pengendali = logging.StreamHandler()  # Pengendali konsol
f_pengendali = logging.FileHandler('file.log')  # Pengendali fail
c_pengendali.setLevel(logging.WARNING)
f_pengendali.setLevel(logging.ERROR)

# Buat pengformat dan tambahkan ke pengendali
c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
c_pengendali.setFormatter(c_format)
f_pengendali.setFormatter(f_format)

# Tambahkan pengendali ke pengguna log
pengguna_log.addHandler(c_pengendali)
pengguna_log.addHandler(f_pengendali)

# Uji pengguna log
pengguna_log.debug('Ini adalah mesej debug')
pengguna_log.info('Ini adalah mesej info')
pengguna_log.warning('Ini adalah mesej peringatan')
pengguna_log.error('Ini adalah mesej kesalahan')
pengguna_log.critical('Ini adalah mesej kritikal')

Dalam contoh ini, kita telah menetapkan dua pengendali:

  1. Satu StreamHandler yang mengoutput PERINGATAN dan di atas ke konsol
  2. Satu FileHandler yang log KESALAHAN dan di atas ke fail

Jalankan kod ini, dan anda akan lihat PERINGATAN dan di atas di atas konsol anda, sementara hanya KESALAHAN dan KRITIKAL mesej yang disimpan ke fail.

Dan itu adalah semua, rakan-rakan! Anda baru saja mengambil langkah pertama anda ke atas dunia penyusunan log Python. Ingat, latihan membuat perpaduan. Cobalah bermain dengan konfigurasi yang berbeza dan lihat apa yang paling baik untuk projek anda.

Selamat penyusunan log, dan hendaklah kod anda sentiasa bebas dari pepijat!

Credits: Image by storyset