Dasar-Dasar Modul logging
Konfigurasikan logger, tetapkan level, dan keluarkan pesan dengan benar.
Dasar-Dasar Modul logging adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Mengapa Pencatatan Log, Bukan Pencetakan?
Modul logging menyediakan tingkat keparahan, tujuan keluaran yang dapat dikonfigurasi, stempel waktu, serta kemampuan untuk membungkam keluaran tanpa mengubah kode.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")Tingkat Log
Python mendefinisikan lima tingkat standar dengan tingkat keparahan yang meningkat: DEBUG, INFO, WARNING, ERROR, CRITICAL. Hanya pesan pada atau di atas tingkat yang dikonfigurasi yang akan dikeluarkan.
import logging
# Numeric values:
# DEBUG = 10
# INFO = 20
# WARNING = 30
# ERROR = 40
# CRITICAL = 50
logging.basicConfig(level=logging.WARNING)
logging.debug("hidden") # not shown
logging.warning("shown") # shownMendapatkan Logger
Gunakan logging.getLogger(__name__) di setiap modul. Ini membuat hierarki yang sesuai dengan struktur modul.
import logging
logger = logging.getLogger(__name__)
def process(data):
logger.info("Processing %d items", len(data))
return [x * 2 for x in data]Opsi basicConfig
basicConfig mengonfigurasi logger akar dengan cepat. Argumen bernama yang umum: level, format, filename, filemode.
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(name)s — %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)Kolom Format Log
Kolom format utama: %(levelname)s, %(name)s, %(message)s, %(asctime)s, %(filename)s, %(lineno)d.
import logging
fmt = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logging.info("Server started on port 8080")Mencatat Pengecualian
Gunakan logger.exception() di dalam blok except untuk mencatat pesan AND jejak balik lengkap.
import logging
logger = logging.getLogger(__name__)
try:
1 / 0
except ZeroDivisionError:
logger.exception("Division failed")
# Logs message + traceback automaticallyKonteks Tambahan dengan extra=
Teruskan dict sebagai extra= untuk menambahkan kolom kustom ke catatan log.
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(
format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})Pemformatan String Tertunda
Teruskan argumen format secara terpisah—jangan memformat string terlebih dahulu. Ini menghindari biaya pembuatan string saat pesan disaring.
import logging
logger = logging.getLogger(__name__)
# BAD (always builds the string):
logger.debug(f"Processing {len(data)} items")
# GOOD (only builds if DEBUG is enabled):
logger.debug("Processing %d items", len(data))Menonaktifkan Pencatatan Log
Panggil logging.disable(level) untuk membungkam semua pesan hingga tingkat tersebut secara global—berguna dalam pengujian.
import logging
logging.disable(logging.CRITICAL) # suppress everything
# All log calls now silently do nothing
logging.disable(logging.NOTSET) # re-enableHierarki Logger
Nama logger menggunakan titik sebagai pemisah. Logger anak meneruskan catatan ke logger induk kecuali propagate=False.
import logging
parent = logging.getLogger("myapp")
child = logging.getLogger("myapp.database")
# child propagates to parent by default
child.warning("DB slow") # also appears in myapp's handlersLogger Akar
Logger akar (dari logging.warning() dan sebagainya) merupakan leluhur semua logger. Konfigurasikan dengan basicConfig atau dengan menambahkan penangan secara langsung.
import logging
root = logging.getLogger() # root logger
root.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
root.addHandler(handler)Pemeriksaan Singkat
Metode logging mana yang sebaiknya digunakan di dalam blok except agar jejak balik lengkap disertakan secara otomatis?
Ringkasan
Gunakan logger bernama dengan getLogger(__name__), lakukan konfigurasi melalui basicConfig, teruskan argumen format secara tertunda, dan gunakan logger.exception() untuk jejak balik kesalahan. Logger membentuk hierarki yang berakar pada logger akar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-Dasar Modul logging” gratis?
Ya — teks lengkap “Dasar-Dasar Modul logging” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Dasar-Dasar Modul logging”?
Konfigurasikan logger, tetapkan level, dan keluarkan pesan dengan benar. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Dasar-Dasar Modul logging” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Modul logging
- Handler, Formatter, dan Filter
- Logging Terstruktur
- Debugging dengan pdb