logging --- pencatatan peristiwa

Modul ini menyediakan subset ringan dari paket logging standar Python yang diadaptasi untuk MicroPython. Modul ini mendukung pencatatan bertingkat melalui objek Logger yang dinamai secara hierarkis, sejumlah kecil handler (StreamHandler, FileHandler), pemformatan gaya printf melalui Formatter, dan fungsi kemudahan tingkat modul yang setara dengan yang beroperasi pada logger akar.

Modul ini mengikuti API CPython yang familiar dengan cukup dekat sehingga aplikasi sederhana yang ditulis untuk pustaka standar seharusnya berfungsi tanpa perubahan. Filter, penguncian multi-proses, format file konfigurasi, dan sebagian besar kelas handler tidak disediakan.

Konstanta Level

logging.CRITICAL: int

Nilai numerik 50. Digunakan untuk kesalahan yang tidak dapat dipulihkan.

logging.ERROR: int

Nilai numerik 40. Digunakan untuk masalah serius.

logging.WARNING: int

Nilai numerik 30. Level default untuk logger akar yang baru dikonfigurasi.

logging.INFO: int

Nilai numerik 20. Digunakan untuk pesan konfirmasi.

logging.DEBUG: int

Nilai numerik 10. Digunakan untuk keluaran diagnostik terperinci.

logging.NOTSET: int

Nilai numerik 0. Menunjukkan logger tanpa level yang dikonfigurasi (level efektif kemudian diwarisi dari logger akar atau WARNING).

Fungsi

logging.getLogger(name: str | None = None) Logger

Kembalikan Logger yang terdaftar dengan nama name, buat pada penggunaan pertama. Jika name adalah None, logger akar dikembalikan. Panggilan pertama dengan name="root" (atau dengan name tidak diset) secara implisit memanggil basicConfig untuk melampirkan StreamHandler default yang menulis ke sys.stderr.

logging.log(level: int, msg: str, *args) None

Catat pesan pada level di logger akar. args diinterpolasi ke dalam msg menggunakan pemformatan % gaya printf; satu argumen dict digunakan sebagai pemetaan.

logging.debug(msg: str, *args) None

Setara dengan getLogger().debug(msg, *args).

logging.info(msg: str, *args) None

Setara dengan getLogger().info(msg, *args).

logging.warning(msg: str, *args) None

Setara dengan getLogger().warning(msg, *args).

logging.error(msg: str, *args) None

Setara dengan getLogger().error(msg, *args).

logging.critical(msg: str, *args) None

Setara dengan getLogger().critical(msg, *args).

logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None

Setara dengan getLogger().exception(msg, *args, exc_info=exc_info). Mencatat pesan pada ERROR dan secara tambahan memformat traceback pengecualian aktif ketika exc_info bernilai truthy. Jika exc_info itu sendiri adalah BaseException, traceback pengecualian tersebut digunakan; jika tidak, sys.exc_info() dikonsultasikan bila tersedia.

logging.shutdown() None

Tutup setiap handler yang dilampirkan ke setiap logger yang dikenal dan lupakan logger tersebut. Didaftarkan secara otomatis melalui sys.atexit ketika hook tersebut tersedia.

logging.addLevelName(level: int, name: str) None

Kaitkan nama tekstual name dengan level numerik level sehingga Formatter dapat merendernya melalui %(levelname)s.

logging.basicConfig(filename: str | None = None, filemode: str = 'a', format: str | None = None, datefmt: str | None = None, level: int = WARNING, stream=None, encoding: str = 'UTF-8', force: bool = False) None

Konfigurasikan logger akar dengan satu handler.

Jika filename diberikan, sebuah FileHandler dibuat menggunakan filemode dan encoding; jika tidak, sebuah StreamHandler yang menulis ke stream (default ke sys.stderr) digunakan.

format dan datefmt diteruskan ke Formatter baru.

level mengatur level handler dan level logger akar.

Jika logger akar sudah memiliki handler, fungsi ini adalah no-op kecuali jika force adalah True, dalam hal ini handler yang ada ditutup dan diganti.

Kelas

class logging.Logger(name: str, level: int = NOTSET)

Logger bernama. Buat logger melalui getLogger daripada secara langsung, sehingga getLogger dapat mengembalikan instans yang sama untuk nama yang sama.

name: str

Nama bertitik logger.

level: int

Level numerik yang dikonfigurasi. 0 (NOTSET) berarti "warisi".

handlers: list

Daftar instans Handler yang dilampirkan ke logger ini. Bila kosong, pesan dikirimkan ke handler logger akar.

setLevel(level: int) None

Tetapkan level ambang batas logger.

isEnabledFor(level: int) bool

Kembalikan True jika pesan dengan level akan diproses oleh logger ini.

getEffectiveLevel() int

Kembalikan nilai pertama yang bukan nol dari: level logger ini, level logger akar, atau WARNING.

log(level: int, msg: str, *args) None

Catat msg pada level. args diinterpolasi ke dalam msg dengan operator %; jika argumen posisional pertama adalah dict, maka digunakan sebagai pemetaan.

debug(msg: str, *args) None

Catat msg pada DEBUG.

info(msg: str, *args) None

Catat msg pada INFO.

warning(msg: str, *args) None

Catat msg pada WARNING.

error(msg: str, *args) None

Catat msg pada ERROR.

critical(msg: str, *args) None

Catat msg pada CRITICAL.

exception(msg: str, *args, exc_info: bool | BaseException = True) None

Catat msg pada ERROR dan, ketika exc_info bernilai truthy, tambahkan traceback yang diformat. Jika exc_info adalah instans BaseException, traceback pengecualian tersebut dirender; jika tidak, pengecualian aktif dikonsultasikan melalui sys.exc_info().

addHandler(handler: Handler) None

Lampirkan handler ke logger ini.

hasHandlers() bool

Kembalikan True jika ada handler yang dilampirkan ke logger ini.

class logging.Handler(level: int = NOTSET)

Kelas dasar untuk semua handler. Sub-kelas mengimplementasikan emit().

level: int

Level ambang batas handler.

formatter: 'Formatter | None'

Formatter aktif, atau None.

setLevel(level: int) None

Tetapkan level ambang batas handler.

setFormatter(formatter: Formatter) None

Lampirkan formatter ke handler ini.

format(record: LogRecord) str

Render record menggunakan formatter yang dikonfigurasi.

close() None

Lepaskan sumber daya yang dipegang oleh handler. Dipanggil oleh shutdown dan oleh FileHandler ketika ditutup.

class logging.StreamHandler(stream=None)

Handler yang menulis rekaman terformat, diikuti oleh self.terminator ("\n" secara default), ke stream. stream default ke sys.stderr.

stream

Objek stream tujuan.

terminator: str

String yang ditambahkan setelah setiap rekaman terformat. Default ke "\n".

emit(record: LogRecord) None

Tulis record ke stream jika levelnya memenuhi ambang batas handler.

close() None

Siram stream yang mendasarinya ketika memaparkan metode flush.

class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')

Subkelas StreamHandler yang membuka filename dengan mode dan encoding yang diberikan dan menulis rekaman terformat ke dalamnya. File yang mendasarinya ditutup pada close().

class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)

Render instans LogRecord menjadi string.

fmt adalah template gaya printf. Kunci yang dikenali adalah %(name)s, %(message)s, %(msecs)d, %(asctime)s, dan %(levelname)s. Bila tidak diset, default ke "%(levelname)s:%(name)s:%(message)s".

datefmt adalah template time.strftime yang digunakan untuk merender %(asctime)s. Default ke "%Y-%m-%d %H:%M:%S".

usesTime() bool

Kembalikan True jika template format merujuk ke asctime.

formatTime(datefmt: str, record: LogRecord) str | None

Format record.ct menggunakan time.strftime dan datefmt. Mengembalikan None pada platform di mana time.strftime tidak tersedia.

format(record: LogRecord) str

Render record. Jika template menggunakan asctime, formatTime() dipanggil terlebih dahulu untuk mengisi record.asctime.

class logging.LogRecord

Wadah untuk data yang diteruskan dari Logger ke handler-nya. Instans diisi melalui set(); implementasi logger menggunakan kembali satu rekaman per logger untuk mengurangi alokasi.

name: str

Nama logger asal.

levelno: int

Level numerik rekaman ini.

levelname: str

Nama level tekstual.

message: str

Pesan log yang sepenuhnya diformat.

ct: float

Waktu pembuatan yang dikembalikan oleh time.time().

msecs: int

Komponen milidetik dari ct.

asctime: str | None

Timestamp yang dapat dibaca manusia; diisi secara malas oleh Formatter.

set(name: str, level: int, message: str) None

Inisialisasi rekaman dengan nilai yang diberikan dan ambil waktu saat ini.