Python | Agregar registro a las bibliotecas de Python

En este artículo, aprenderemos cómo agregar una capacidad de registro a una biblioteca, pero no queremos que interfiera con los programas que no usan el registro.

Para las bibliotecas que desean realizar el registro, cree un objeto registrador dedicado e inicialmente configúrelo como se muestra en el código a continuación:

Código #1:

# abc.py
import logging
  
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
  
# Example function (for testing)
def func():
    log.critical('A Critical Error !')
    log.debug('A debug message')

Con esta configuración, no se producirá ningún registro de forma predeterminada.

import somelib
abc.func()

Producción :

NO OUTPUT

Si el sistema de registro se configura, los mensajes de registro comenzarán a aparecer.

Código #2:

import logging
  
logging.basicConfig()
somelib.func()

Producción :

CRITICAL:somelib:A Critical Error!

Como funciona ?

  • Las bibliotecas presentan un problema especial para el registro, ya que no se conoce la información sobre el entorno en el que se utilizan.
  • Como regla general, nunca escriba código de biblioteca que intente configurar el sistema de registro por sí mismo o que haga suposiciones sobre una configuración de registro ya existente.
  • Por lo tanto, hay que tener mucho cuidado para proporcionar aislamiento.
  • La llamada a getLogger(__name__) crea un módulo registrador que tiene el mismo nombre que el módulo que llama.
  • Dado que todos los módulos son únicos, esto crea un registrador dedicado que probablemente esté separado de otros registradores.
  • La log.addHandler(logging.NullHandler())operación adjunta un controlador nulo al objeto registrador recién creado. Un controlador nulo ignora todos los mensajes de registro de forma predeterminada.
  • Por lo tanto, si se usa la biblioteca y nunca se configura el registro, no aparecerán mensajes ni advertencias.

El registro de bibliotecas individuales se puede configurar de forma independiente, independientemente de otras configuraciones de registro, como se muestra en el código que se proporciona a continuación:

Código #3:

import logging
  
logging.basicConfig(level = logging.ERROR)
  
import abc
print (abc.func())
  
Change the logging level for 'abc' only
logging.getLogger('abc').level = logging.DEBUG
print (abc.func())

Producción :

CRITICAL:abc:A Critical Error!
DEBUG:abc:A debug message

Publicación traducida automáticamente

Artículo escrito por manikachandna97 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *