logging --- ghi nhật ký sự kiện

Mô-đun này cung cấp một tập hợp con nhẹ của gói logging chuẩn trong Python, được điều chỉnh cho MicroPython. Nó hỗ trợ ghi nhật ký theo cấp độ thông qua các đối tượng Logger được đặt tên theo phân cấp, một số lượng nhỏ các trình xử lý (StreamHandler, FileHandler), định dạng kiểu printf qua Formatter, và các hàm tiện lợi ở cấp mô-đun tương đương với các hàm hoạt động trên logger gốc.

Mô-đun này tuân theo API CPython quen thuộc đủ chặt chẽ để các ứng dụng đơn giản được viết cho thư viện chuẩn hoạt động mà không cần thay đổi. Bộ lọc, khóa đa tiến trình, định dạng tệp cấu hình và hầu hết các lớp trình xử lý không được cung cấp.

Hằng số cấp độ

logging.CRITICAL: int

Giá trị số 50. Dùng cho các lỗi không thể phục hồi.

logging.ERROR: int

Giá trị số 40. Dùng cho các vấn đề nghiêm trọng.

logging.WARNING: int

Giá trị số 30. Cấp độ mặc định cho logger gốc mới được cấu hình.

logging.INFO: int

Giá trị số 20. Dùng cho các thông báo xác nhận.

logging.DEBUG: int

Giá trị số 10. Dùng cho đầu ra chẩn đoán chi tiết.

logging.NOTSET: int

Giá trị số 0. Chỉ ra một logger không có cấp độ được cấu hình (khi đó cấp độ hiệu lực được kế thừa từ logger gốc hoặc WARNING).

Hàm

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

Trả về Logger đã đăng ký với tên name, tạo mới khi sử dụng lần đầu. Nếu nameNone thì trả về logger gốc. Lần gọi đầu tiên với name="root" (hoặc với name không được đặt) sẽ ngầm gọi basicConfig để gắn StreamHandler mặc định ghi vào sys.stderr.

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

Ghi một thông báo ở level trên logger gốc. args được nội suy vào msg bằng định dạng printf kiểu %; một đối số dict đơn lẻ được dùng làm ánh xạ.

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

Tương đương với getLogger().debug(msg, *args).

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

Tương đương với getLogger().info(msg, *args).

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

Tương đương với getLogger().warning(msg, *args).

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

Tương đương với getLogger().error(msg, *args).

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

Tương đương với getLogger().critical(msg, *args).

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

Tương đương với getLogger().exception(msg, *args, exc_info=exc_info). Ghi thông báo ở ERROR và bổ sung định dạng traceback của ngoại lệ đang hoạt động khi exc_info có giá trị đúng. Nếu exc_info chính là một BaseException, traceback của ngoại lệ đó được sử dụng; ngược lại sys.exc_info() được tham khảo khi có sẵn.

logging.shutdown() None

Đóng mọi trình xử lý gắn với mọi logger đã biết và xóa các logger đó. Được đăng ký tự động qua sys.atexit khi hook đó có sẵn.

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

Liên kết name dạng văn bản với level dạng số để Formatter có thể hiển thị nó qua %(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

Cấu hình logger gốc với một trình xử lý duy nhất.

Nếu filename được cung cấp, một FileHandler được tạo bằng filemodeencoding; ngược lại một StreamHandler ghi vào stream (mặc định là sys.stderr) được sử dụng.

formatdatefmt được truyền đến một Formatter mới.

level đặt cả cấp độ của trình xử lý và cấp độ của logger gốc.

Nếu logger gốc đã có các trình xử lý, hàm này là no-op trừ khi forceTrue, trong trường hợp đó các trình xử lý hiện tại được đóng và thay thế.

Lớp

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

Một logger được đặt tên. Khởi tạo các logger qua getLogger thay vì trực tiếp, để getLogger có thể trả về cùng một thực thể cho cùng một tên.

name: str

Tên có dấu chấm của logger.

level: int

Cấp độ số được cấu hình. 0 (NOTSET) nghĩa là "kế thừa".

handlers: list

Danh sách các thực thể Handler gắn với logger này. Khi trống, thông báo được gửi đến các trình xử lý của logger gốc.

setLevel(level: int) None

Đặt ngưỡng cấp độ của logger.

isEnabledFor(level: int) bool

Trả về True nếu một thông báo ở level sẽ được xử lý bởi logger này.

getEffectiveLevel() int

Trả về giá trị khác không đầu tiên trong số: cấp độ của logger này, cấp độ của logger gốc, hoặc WARNING.

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

Ghi msglevel. args được nội suy vào msg bằng toán tử %; nếu đối số vị trí đầu tiên là dict thì nó được dùng làm ánh xạ.

debug(msg: str, *args) None

Ghi msgDEBUG.

info(msg: str, *args) None

Ghi msgINFO.

warning(msg: str, *args) None

Ghi msgWARNING.

error(msg: str, *args) None

Ghi msgERROR.

critical(msg: str, *args) None

Ghi msgCRITICAL.

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

Ghi msgERROR và, khi exc_info có giá trị đúng, thêm vào traceback đã được định dạng. Nếu exc_info là một thực thể BaseException thì traceback của ngoại lệ đó được hiển thị; ngược lại ngoại lệ đang hoạt động được tham khảo qua sys.exc_info().

addHandler(handler: Handler) None

Gắn handler vào logger này.

hasHandlers() bool

Trả về True nếu có bất kỳ trình xử lý nào được gắn vào logger này.

class logging.Handler(level: int = NOTSET)

Lớp cơ sở cho tất cả các trình xử lý. Các lớp con triển khai emit().

level: int

Ngưỡng cấp độ của trình xử lý.

formatter: 'Formatter | None'

Formatter đang hoạt động, hoặc None.

setLevel(level: int) None

Đặt ngưỡng cấp độ của trình xử lý.

setFormatter(formatter: Formatter) None

Gắn formatter vào trình xử lý này.

format(record: LogRecord) str

Hiển thị record bằng formatter đã cấu hình.

close() None

Giải phóng tài nguyên do trình xử lý nắm giữ. Được gọi bởi shutdown và bởi FileHandler khi nó được đóng.

class logging.StreamHandler(stream=None)

Trình xử lý ghi các bản ghi đã định dạng, theo sau là self.terminator ("\n" theo mặc định), vào stream. stream mặc định là sys.stderr.

stream

Đối tượng luồng đích.

terminator: str

Chuỗi được thêm vào sau mỗi bản ghi đã định dạng. Mặc định là "\n".

emit(record: LogRecord) None

Ghi record vào stream nếu cấp độ của nó đáp ứng ngưỡng của trình xử lý.

close() None

Xả dữ liệu từ luồng bên dưới khi nó có phương thức flush.

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

Lớp con của StreamHandler mở filename với modeencoding cho trước, và ghi các bản ghi đã định dạng vào đó. Tệp bên dưới được đóng khi gọi close().

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

Hiển thị các thực thể LogRecord thành chuỗi.

fmt là mẫu kiểu printf. Các khóa được nhận biết là %(name)s, %(message)s, %(msecs)d, %(asctime)s%(levelname)s. Khi không được đặt, mặc định là "%(levelname)s:%(name)s:%(message)s".

datefmt là mẫu time.strftime dùng để hiển thị %(asctime)s. Mặc định là "%Y-%m-%d %H:%M:%S".

usesTime() bool

Trả về True nếu mẫu định dạng tham chiếu đến asctime.

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

Định dạng record.ct bằng time.strftimedatefmt. Trả về None trên các nền tảng không có time.strftime.

format(record: LogRecord) str

Hiển thị record. Nếu mẫu sử dụng asctime, formatTime() được gọi trước để điền record.asctime.

class logging.LogRecord

Container cho dữ liệu được truyền từ một Logger đến các trình xử lý của nó. Các thực thể được điền qua set(); các triển khai logger tái sử dụng một bản ghi duy nhất cho mỗi logger để giảm việc cấp phát bộ nhớ.

name: str

Tên của logger nguồn.

levelno: int

Cấp độ số của bản ghi này.

levelname: str

Tên cấp độ dạng văn bản.

message: str

Thông báo nhật ký đã được định dạng đầy đủ.

ct: float

Thời gian tạo như được trả về bởi time.time().

msecs: int

Thành phần mili giây của ct.

asctime: str | None

Dấu thời gian có thể đọc được; được điền chậm (lazy) bởi Formatter.

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

Khởi tạo bản ghi với các giá trị cho trước và ghi lại thời gian hiện tại.