logging --- 事件日志¶
本模块为 MicroPython 提供了标准 Python logging 包的一个轻量级子集。它通过分层命名的 Logger 对象支持分级日志记录,提供一小组处理器(StreamHandler、FileHandler)、由 Formatter 实现的 printf 风格格式化,以及与作用于根日志记录器的方法等效的模块级便捷函数。
本模块对 CPython API 的遵循程度足够高,因此为标准库编写的简单应用程序应当可以原样运行。本模块不提供过滤器、多进程锁、配置文件格式以及大多数处理器类。
级别常量¶
函数¶
- logging.getLogger(name: str | None = None) Logger¶
返回以 name 注册的
Logger,首次使用时创建。如果 name 为None则返回根日志记录器。首次以name="root"(或不设置 name)调用时会隐式调用basicConfig,以附加一个写入sys.stderr的默认StreamHandler。
- logging.log(level: int, msg: str, *args) None¶
在根日志记录器上以 level 级别记录一条消息。args 使用 printf 风格的
%格式化被插入到 msg 中;单个 dict 参数会被用作映射。
- logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None¶
等效于
getLogger().exception(msg, *args, exc_info=exc_info)。在ERROR级别记录消息,并在 exc_info 为真值时额外格式化当前活动异常的回溯。如果 exc_info 本身是一个BaseException,则使用该异常的回溯;否则在可用时查询sys.exc_info()。
- logging.addLevelName(level: int, name: str) None¶
将文本 name 与数值 level 关联起来,以便
Formatter可以通过%(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¶
用单个处理器配置根日志记录器。
如果提供了 filename,则使用 filemode 和 encoding 创建一个
FileHandler;否则使用一个写入 stream(默认为sys.stderr)的StreamHandler。format 和 datefmt 会被传递给一个新的
Formatter。level 同时设置处理器的级别和根日志记录器的级别。
如果根日志记录器已经有处理器,则除非 force 为
True,否则此函数不执行任何操作;在 force 为真值的情况下,现有的处理器会被关闭并替换。
类¶
- class logging.Logger(name: str, level: int = NOTSET)¶
一个命名的日志记录器。请通过
getLogger而非直接构造来创建日志记录器,这样getLogger才能为相同的名称返回同一个实例。- log(level: int, msg: str, *args) None¶
以 level 级别记录 msg。args 使用
%运算符被插入到 msg 中;如果第一个位置参数是 dict,则将其用作映射。
- class logging.Handler(level: int = NOTSET)¶
所有处理器的基类。子类实现
emit()。- close() None¶
释放处理器持有的资源。由
shutdown以及FileHandler在关闭时调用。
- class logging.StreamHandler(stream=None)¶
将格式化后的记录写入 stream,后跟
self.terminator(默认为"\n")的处理器。stream 默认为sys.stderr。- stream¶
目标流对象。
- class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')¶
StreamHandler的子类,它以给定的 mode 和 encoding 打开 filename 并将格式化后的记录写入其中。底层文件在close()时关闭。
- class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)¶
将
LogRecord实例呈现为字符串。fmt 是一个 printf 风格的模板。可识别的键有
%(name)s、%(message)s、%(msecs)d、%(asctime)s和%(levelname)s。未设置时默认为"%(levelname)s:%(name)s:%(message)s"。datefmt 是用于呈现
%(asctime)s的time.strftime模板。默认为"%Y-%m-%d %H:%M:%S"。- formatTime(datefmt: str, record: LogRecord) str | None¶
使用
time.strftime和 datefmt 格式化record.ct。在time.strftime不可用的平台上返回None。
- format(record: LogRecord) str¶
呈现 record。如果模板使用了
asctime,则会先调用formatTime()来填充record.asctime。