logging — registro de eventos#

Este módulo proporciona un subconjunto ligero del paquete estándar de Python logging adaptado a MicroPython. Admite el registro por niveles a través de objetos Logger con nombres jerárquicos, un pequeño conjunto de manejadores (StreamHandler, FileHandler), formato al estilo printf mediante Formatter y funciones de conveniencia a nivel de módulo equivalentes a las que operan sobre el logger raíz.

El módulo sigue la conocida API de CPython lo bastante de cerca como para que las aplicaciones sencillas escritas para la biblioteca estándar funcionen sin cambios. No se proporcionan los filtros, el bloqueo entre múltiples procesos, el formato de archivo de configuración ni la mayoría de las clases de manejadores.

Constantes de nivel#

logging.CRITICAL: int#

Valor numérico 50. Se utiliza para errores irrecuperables.

logging.ERROR: int#

Valor numérico 40. Se utiliza para problemas graves.

logging.WARNING: int#

Valor numérico 30. Nivel predeterminado de un logger raíz recién configurado.

logging.INFO: int#

Valor numérico 20. Se utiliza para mensajes de confirmación.

logging.DEBUG: int#

Valor numérico 10. Se utiliza para salida de diagnóstico detallada.

logging.NOTSET: int#

Valor numérico 0. Indica un logger sin nivel configurado (el nivel efectivo se hereda entonces del logger raíz o de WARNING).

Funciones#

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

Devuelve el Logger registrado bajo name, creándolo en el primer uso. Si name es None se devuelve el logger raíz. La primera llamada con name="root" (o con name sin establecer) invoca implícitamente basicConfig para adjuntar un StreamHandler predeterminado que escribe en sys.stderr.

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

Registra un mensaje en level sobre el logger raíz. Los args se interpolan en msg usando formato al estilo printf con %; un único argumento de tipo dict se usa como mapeo.

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

Equivalente a getLogger().debug(msg, *args).

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

Equivalente a getLogger().info(msg, *args).

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

Equivalente a getLogger().warning(msg, *args).

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

Equivalente a getLogger().error(msg, *args).

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

Equivalente a getLogger().critical(msg, *args).

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

Equivalente a getLogger().exception(msg, *args, exc_info=exc_info). Registra el mensaje en ERROR y, además, formatea el rastreo (traceback) de la excepción activa cuando exc_info es verdadero. Si exc_info es en sí una BaseException, se utiliza el rastreo de esa excepción; en caso contrario se consulta sys.exc_info() cuando está disponible.

logging.shutdown() None#

Cierra todos los manejadores adjuntos a todos los loggers conocidos y olvida los loggers. Se registra automáticamente mediante sys.atexit cuando ese gancho está disponible.

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

Asocia el nombre textual name con el nivel numérico level para que Formatter pueda mostrarlo mediante %(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#

Configura el logger raíz con un único manejador.

Si se proporciona filename se crea un FileHandler usando filemode y encoding; de lo contrario se usa un StreamHandler que escribe en stream (con valor predeterminado sys.stderr).

format y datefmt se pasan a un nuevo Formatter.

level establece tanto el nivel del manejador como el nivel del logger raíz.

Si el logger raíz ya tiene manejadores, esta función no hace nada a menos que force sea True, en cuyo caso los manejadores existentes se cierran y se reemplazan.

Clases#

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

Un logger con nombre. Construya los loggers mediante getLogger en lugar de directamente, de modo que getLogger pueda devolver la misma instancia para el mismo nombre.

name: str#

El nombre con puntos del logger.

level: int#

El nivel numérico configurado. 0 (NOTSET) significa «heredar».

handlers: list#

La lista de instancias de Handler adjuntas a este logger. Cuando está vacía, los mensajes se despachan a los manejadores del logger raíz.

setLevel(level: int) None#

Establece el nivel de umbral del logger.

isEnabledFor(level: int) bool#

Devuelve True si un mensaje de level sería procesado por este logger.

getEffectiveLevel() int#

Devuelve el primero distinto de cero de: el nivel de este logger, el nivel del logger raíz o WARNING.

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

Registra msg en level. Los args se interpolan en msg con el operador %; si el primer argumento posicional es un dict, se usa como mapeo.

debug(msg: str, *args) None#

Registra msg en DEBUG.

info(msg: str, *args) None#

Registra msg en INFO.

warning(msg: str, *args) None#

Registra msg en WARNING.

error(msg: str, *args) None#

Registra msg en ERROR.

critical(msg: str, *args) None#

Registra msg en CRITICAL.

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

Registra msg en ERROR y, cuando exc_info es verdadero, añade el rastreo formateado. Si exc_info es una instancia de BaseException, se muestra el rastreo de esa excepción; en caso contrario se consulta la excepción activa mediante sys.exc_info().

addHandler(handler: Handler) None#

Adjunta handler a este logger.

hasHandlers() bool#

Devuelve True si hay algún manejador adjunto a este logger.

class logging.Handler(level: int = NOTSET)#

Clase base para todos los manejadores. Las subclases implementan emit().

level: int#

El nivel de umbral del manejador.

formatter: 'Formatter | None'#

El Formatter activo, o None.

setLevel(level: int) None#

Establece el nivel de umbral del manejador.

setFormatter(formatter: Formatter) None#

Adjunta formatter a este manejador.

format(record: LogRecord) str#

Renderiza record usando el formateador configurado.

close() None#

Libera los recursos retenidos por el manejador. Lo llaman shutdown y FileHandler cuando se cierra.

class logging.StreamHandler(stream=None)#

Manejador que escribe los registros formateados, seguidos de self.terminator ("\n" de forma predeterminada), en stream. stream toma como valor predeterminado sys.stderr.

stream#

El objeto stream de destino.

terminator: str#

Cadena añadida después de cada registro formateado. Su valor predeterminado es "\n".

emit(record: LogRecord) None#

Escribe record en stream si su nivel alcanza el umbral del manejador.

close() None#

Vacía el stream subyacente cuando este expone un método flush.

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

Subclase de StreamHandler que abre filename con el mode y el encoding dados y escribe en él los registros formateados. El archivo subyacente se cierra en close().

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

Renderiza instancias de LogRecord como cadenas.

fmt es una plantilla al estilo printf. Las claves reconocidas son %(name)s, %(message)s, %(msecs)d, %(asctime)s y %(levelname)s. Cuando no se establece, su valor predeterminado es "%(levelname)s:%(name)s:%(message)s".

datefmt es la plantilla de time.strftime usada para mostrar %(asctime)s. Su valor predeterminado es "%Y-%m-%d %H:%M:%S".

usesTime() bool#

Devuelve True si la plantilla de formato hace referencia a asctime.

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

Formatea record.ct usando time.strftime y datefmt. Devuelve None en las plataformas donde time.strftime no está disponible.

format(record: LogRecord) str#

Renderiza record. Si la plantilla usa asctime, se invoca primero formatTime() para rellenar record.asctime.

class logging.LogRecord#

Contenedor de los datos que un Logger pasa a sus manejadores. Las instancias se rellenan mediante set(); las implementaciones de logger reutilizan un único registro por logger para reducir las asignaciones de memoria.

name: str#

El nombre del logger de origen.

levelno: int#

Nivel numérico de este registro.

levelname: str#

Nombre textual del nivel.

message: str#

El mensaje de registro completamente formateado.

ct: float#

Hora de creación tal como la devuelve time.time().

msecs: int#

Componente de milisegundos de ct.

asctime: str | None#

Marca de tiempo legible por humanos; la rellena de forma diferida Formatter.

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

Inicializa el registro con los valores dados y captura la hora actual.